2016-05-09 47 views
-3

我正在android應用程序上工作,但我想從活動傳遞一些數據到從導航抽屜形式的活動中顯示的意圖但是當我運行它時,我得到一個null指針異常。 這裏是我的活動方法NullPointerException將數據從活動傳遞到意圖

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); 

這裏是我的片段方法:

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); 

但是當我運行的代碼我得到:

`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)` 

任何人都可以請幫我在異常來了,如何解決它

+0

檢查您是否從此代碼獲得String **「TATA」** new MainActivity().EXTRA_LOGIN_DATA'。 ?? –

+0

在fragobj.setArguments(bundle)後顯示更多的代碼行;' –

+0

我的片段在Mainactivity中顯示爲導航抽屜 – Nyerere

回答

0

你應該打電話setArguments之前添加片段到活動,所以不要在您的佈局xml中寫入片段。只需使用getSupportFragmentManager().beginTransaction().replace(placeHolderId, fragment).commit();setArguments

+0

對不起,但我的片段我把它放在活動作爲導航抽屜@rainash – Nyerere

+0

@奈瑞爾你可以重寫你的片段'setArguments'獲取參數,'nullPointException'的原因是'onCreateView'在'setArguments'之前被調用 – rainash

0

從你的活動意圖發送數據爲:

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

和片段onCreateView方法:

@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

檢查 「MessageText中」 之首。如果你得到的值爲空而不是正確。

相關問題