user3363368
user3363368

Reputation: 81

how to use alertdialog builder in fragment

I want to display an alert dialog in my app.i am using fragments.

     public class MyFragmentB extends Fragment {


                Context context;
                TextView tv1;
                @Override
                public View onCreateView(final LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
                    final View myFragmentView = inflater.inflate(R.layout.fragment_b, container, false);

                        tv1 = (TextView)myFragmentView.findViewById(R.id.textView1);
                        LinearLayout L = (LinearLayout)myFragmentView.findViewById(R.id.linearLayout);
                           L.setOnClickListener(new View.OnClickListener()
                             {
                               @Override
                                public void onClick(View v) {
                                   Dialog dialog = new Dialog(context);
                                      View npView =getActivity().getLayoutInflater().inflate(R.layout.dialog, null);
                                     final NumberPicker np = (NumberPicker) npView.findViewById(R.id.numberPicker1);
                                     np.setMaxValue(10); // max value 10
                                     np.setMinValue(0);   // min value 0
                                     np.setValue(Integer.parseInt(tv1.getText().toString()));
                                     np.setWrapSelectorWheel(true);
                                     AlertDialog.Builder builder = new AlertDialog.Builder(context);
                                     builder.setTitle("title");
                                     builder.setView(npView);
                                     builder.setPositiveButton("Set",
                                         new DialogInterface.OnClickListener() {
                                             public void onClick(DialogInterface dialog, int whichButton) {
                                                 tv1.setText(String.valueOf(np.getValue()));
                                             }
                                         });

                                    builder.setNegativeButton("Cancel",
                                             new DialogInterface.OnClickListener() {
                                                 public void onClick(DialogInterface dialog, int whichButton) {
                                                 }
                                             });
                                    dialog = builder.create();
                                    dialog.show();
                               }
                             });

                      return myFragmentView;
                }
            }

but it was crashing and the error in logcat was

03-09 10:48:11.285: E/AndroidRuntime(899): FATAL EXCEPTION: main
03-09 10:48:11.285: E/AndroidRuntime(899): java.lang.NullPointerException
03-09 10:48:11.285: E/AndroidRuntime(899):  at com.example.tabfragment.MyFragmentB.onCreateView(MyFragmentB.java:57)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.View.measure(View.java:15848)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.View.measure(View.java:15848)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
03-09 10:48:11.285: E/AndroidRuntime(899):  at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:302)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.View.measure(View.java:15848)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
03-09 10:48:11.285: E/AndroidRuntime(899):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.View.measure(View.java:15848)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.Choreographer.doCallbacks(Choreographer.java:562)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.Choreographer.doFrame(Choreographer.java:532)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.os.Handler.handleCallback(Handler.java:730)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.os.Handler.dispatchMessage(Handler.java:92)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.os.Looper.loop(Looper.java:137)
03-09 10:48:11.285: E/AndroidRuntime(899):  at android.app.ActivityThread.main(ActivityThread.java:5103)
03-09 10:48:11.285: E/AndroidRuntime(899):  at java.lang.reflect.Method.invokeNative(Native Method)
03-09 10:48:11.285: E/AndroidRuntime(899):  at java.lang.reflect.Method.invoke(Method.java:525)
03-09 10:48:11.285: E/AndroidRuntime(899):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
03-09 10:48:11.285: E/AndroidRuntime(899):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-09 10:48:11.285: E/AndroidRuntime(899):  at dalvik.system.NativeStart.main(Native Method)
03-09 10:48:11.366: D/dalvikvm(899): GC_FOR_ALLOC freed 151K, 8% free 3566K/3836K, paused 34ms, total 35ms
03-09 10:49:26.219: I/Process(899): Sending signal. PID: 899 SIG: 9
03-09 17:10:17.565: D/dalvikvm(1193): GC_FOR_ALLOC freed 48K, 7% free 2593K/2760K, paused 387ms, total 388ms
03-09 17:10:17.626: I/dalvikvm-heap(1193): Grow heap (frag case) to 3.250MB for 635812-byte allocation
03-09 17:10:17.716: D/dalvikvm(1193): GC_FOR_ALLOC freed <1K, 6% free 3214K/3384K, paused 86ms, total 86ms
03-09 17:10:18.495: D/AndroidRuntime(1193): Shutting down VM
03-09 17:10:18.495: W/dalvikvm(1193): threadid=1: thread exiting with uncaught exception (group=0x41465700)

I don't know what is the problem with this.can anybody help me??

How to write alertdialog in fragment?

Upvotes: 0

Views: 2059

Answers (2)

ElectronicGeek
ElectronicGeek

Reputation: 3318

Replace the context on

Dialog dialog = new Dialog(context);

with

Dialog dialog = new Dialog(getApplicationContext());

context is null at that point.

Upvotes: 1

Cruceo
Cruceo

Reputation: 6834

If that's all your code in FragmentB, then the answer is this line:

L.setOnClickListener

L must be null because "R.id.linearLayout" does not exist within "R.layout.fragment_b"

Are you sure the parent you're trying to access is in that file? You may also want to consider naming things more descriptively than "linearlayout" as things will get really weird, really quickly when you start using more complicated layouts.

Upvotes: 0

Related Questions