-3

I am working on android application but i want to pass some data from an activity to an intent from which is shown in an activity in form of navigation drawer But when i run it i get a null pointer exception. Here is my Activity method

String EXTRA_LOGIN_DATA = "TATA";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Intent intent = getIntent();
    messageText = intent.getStringExtra(userData);


    Bundle bundle = new Bundle();
    bundle.putString(EXTRA_LOGIN_DATA, messageText);
    // set Fragmentclass Arguments
    HomeFragment fragobj = new HomeFragment();
    fragobj.setArguments(bundle);

And here is my Fragment method:

String EXTRA_USER_DATA;
private int lastX = 0;
TextView textView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View  rootView = inflater.inflate(R.layout.fragment_home, container, false);


    Bundle bundle = getArguments();
    user_data = bundle.getString(new MainActivity().EXTRA_LOGIN_DATA);

But when i run the code i get:

`E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: info.androidhive.slidingmenu, PID: 7508
                                                                        java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidhive.slidingmenu/info.androidhive.slidingmenu.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                            at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                            at android.os.Looper.loop(Looper.java:148)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                         Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
                                                                            at info.androidhive.slidingmenu.HomeFragment.onCreateView(HomeFragment.java:51)
                                                                            at android.app.Fragment.performCreateView(Fragment.java:2220)
                                                                            at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:973)
                                                                            at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148)
                                                                            at android.app.BackStackRecord.run(BackStackRecord.java:793)
                                                                            at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535)
                                                                            at android.app.FragmentController.execPendingActions(FragmentController.java:325)
                                                                            at android.app.Activity.performStart(Activity.java:6252)
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                            at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                            at android.os.Looper.loop(Looper.java:148) 
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                            at java.lang.reflect.Method.invoke(Native Method) 
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)` 

Can anyone please help me where the exception comes and how to solve it

Nyerere
  • 29
  • 1
  • 2
  • 8

3 Answers3

0

you should call setArguments before add Fragment to Activity, So don't write fragment in your layout xml. just use getSupportFragmentManager().beginTransaction().replace(placeHolderId, fragment).commit(); after setArguments

rainash
  • 864
  • 6
  • 15
  • Sorry but my fragment i put it on activity as navigation drawer @rainash – Nyerere May 09 '16 at 06:38
  • @Nyerere you can override the `setArguments` in your fragment to get the arguments, the cause of the `NullPointException` is `onCreateView` is called before `setArguments` – rainash May 09 '16 at 06:46
0

From Activity you send data with intent as:

Bundle bundle = new Bundle();
bundle.putString("EXTRA_LOGIN_DATA", "messageText");
HomeFragment fragobj = new HomeFragment();
fragobj.setArguments(bundle);

and in Fragment onCreateView method:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    String strtext = getArguments().getString("EXTRA_LOGIN_DATA");
    return inflater.inflate(R.layout.fragment_home, container, false);
}
0

Check your "messageText" first. if you get that value null than make it correct.