2017-07-27 99 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

相关问题