2017-07-27 155 views
0

我知道有這麼多問題,但他們都不能解決我的問題 我想將字符串變量從一個片段傳遞到另一個片段,這裏是代碼我做到了。但我得到的錯誤從我做無法將字符串值從一個片段傳遞到另一個片段

Desc_1 ldf = new Desc_1(); 
Bundle args = new Bundle(); 
args.putString("YourKey", "YourValue"); 
ldf.setArguments(args); 
getFragmentManager().beginTransaction().add(R.id.frame, ldf).commit(); 

和傳入我不喜歡

public class Desc_1 extends Fragment { 

    public Desc_1() { 
     // Required empty public constructor 
    } 

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

     View rootview=inflater.inflate(R.layout.fragment_desc_1,container,false); 

     String value = getArguments().getString("YourKey"); 

     Toast.makeText(getActivity(), value, 
       Toast.LENGTH_LONG).show(); 

     return rootview; 

    } 
} 

我收到錯誤,如

第二片的第一片段(我將顯示錯誤)

07-27 20:31:06.386 26816-26816/com.example.jaison.newsclient E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.example.jaison.newsclient, PID: 26816 
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference 
     at layout.Desc_1.onCreateView(Desc_1.java:34) 
     at android.support.v4.app.Fragment.performCreateView(Fragment.java:2239) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1332) 
     at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1574) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1641) 
     at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794) 
     at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415) 
     at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200) 
     at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2153) 
     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2063) 
     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:725) 
     at android.os.Handler.handleCallback(Handler.java:815) 
     at android.os.Handler.dispatchMessage(Handler.java:104) 
     at android.os.Looper.loop(Looper.java:207) 
     at android.app.ActivityThread.main(ActivityThread.java:5769) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:861) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:751) 

回答

1

試試這個:

Bundle bundle = getArguments(); 
if(bundle != null) 
    String value = bundle.getString("YourKey"); 
+0

你能解釋爲什麼它發生? –

+0

得到你發送的'Bundle',並且如果沒有得到數據,則測試它是空的 –

1

只需檢查在您的片段內是否爲空,然後在捲曲內Ÿ括號添加代碼

例子:

Bundle bundle_arguments = getArguments(); 
if(bundle_arguments != null) { 
    // your code 
} 
+0

u能交答案是 –

+0

你必須知道如何根據別人告訴你的東西做出某些事情。給你一個完整的解決方案不能幫助你長期:) – Nenco

相關問題