Reputation: 81
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
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
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