2016-02-17 17 views
1

我正在將值從Activity發送到Fragment。在收到Log cat的值時顯示Null Pointer Exception。發送的如何使用包從活動接收分段的值

代碼值

Bundle bundle = new Bundle(); 
bundle.putString("address",sms.get(position).getmAddress()); 
bundle.putString("body",sms.get(position).getmBody()); 
InboxFragment inboxfragment = new InboxFragment(); 
inboxfragment.setArguments(bundle); 
inboxfragment.setArguments(bundle); 

代碼接收值

Bundle bundle= getArguments(); 
    String address = bundle.getString("address"); 
    String body = bundle.getString("body"); 
    addresstv.setText(address); 
    msgtv.setText(body); 

登錄貓

02-17 12:31:23.363 19118-19118/com.smsfilter E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerException 
at com.smsfilter.InboxFragment.onCreateView(InboxFragment.java:53) 
at android.app.Fragment.performCreateView(Fragment.java:1695) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:885) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057) 
at android.app.BackStackRecord.run(BackStackRecord.java:682) 
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435) 
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:441) 
at android.os.Handler.handleCallback(Handler.java:725) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5041) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
at dalvik.system.NativeStart.main(Native Method) 

OnCreateView的代碼()方法

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    //  return super.onCreateView(inflater, container, savedInstanceState); 
    view = inflater.inflate(R.layout.messagebox,container,false); 
    lvMsg=(ListView)view.findViewById(R.id.lvMsg); 
    checkBox=(CheckBox)view.findViewById(R.id.checkBox); 
    TextView addresstv = (TextView) view.findViewById(R.id.lblNumber); 
    msgtv = (TextView) view.findViewById(R.id.lblMsg); 
    sms= new ArrayList<Message>(); 
    list = new ArrayList<String>(); 
    populateMessageList(); 
    Bundle bundle= getArguments(); 
    //Bundle bundle= getActivity().getIntent().getExtras(); 
    String address = bundle.getString("add"); 
    String body = bundle.getString("body"); 
    //addresstv.setText(address); 
    msgtv.setText(body);  
    return view; 

} 
+0

在片段中的哪種方法是獲得捆綁? –

+0

你可以發佈你的日誌 –

+0

也許你有地址或身體空值。所以當你嘗試設置文本時,它會崩潰。檢查你的捆綁值。 –

回答

0

嘗試這種方式。

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    String address = getArguments().getString("address"); 
    String body = getArguments().getString("body"); 
    addresstv.setText(address); 
    msgtv.setText(body); 
} 
0

可以在束從活動中的數據發送到一個片段像下面

Bundle bundle = new Bundle(); 
bundle.putString("address", "sms.get(position).getmAddress()"); 
// set Fragment Arguments 
Fragment fragment = new Fragment(); 
fragment.setArguments(bundle); 

您可以在下面像取,

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    String address= getArguments().getString("address"); 
textview.setText(address); 
    return inflater.inflate(R.layout.fragment, container, false); 
} 

這應該很好地工作。謝謝你

+0

此代碼無法正常工作。發生「空指針異常」。 – Hemant

+0

你在哪裏得到空指針異常。粘貼日誌。 –

0

嘿從你的活動

在這裏你是對的。

Bundle bundle = new Bundle(); 
bundle.putString("address",sms.get(position).getmAddress()); 
bundle.putString("body",sms.get(position).getmBody()); 
InboxFragment inboxfragment = new InboxFragment(); 
inboxfragment. setArguments (bundle); 

在片段中,您必須在獲取getArguments()爲null的onCreate()中調用getArguments。

所以在片段嘗試在任一

String address, body; 
TextView msgtv; 
@Override 
public View onCreateView (LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.layout_filename, this, null); 
    msgtv = (TextView) view.findViewById(R.id.your_view_if); 
    Bundle bundle= getArguments(); 
    address = bundle.getString("address"); 
    body = bundle.getString("body"); 
    msgtv.setText(body); 

    return view; 
} 

或者您可以使用相同的邏輯

public void onActivityCreated (Bundle savedInstanceState) { 
    Bundle bundle= getArguments(); 
    address = bundle.getString("address"); 
    body = bundle.getString("body"); 
    msgtv.setText(body); 
} 

這必將爲你工作。

+0

此代碼不適用。發生NULL指針異常 – Hemant

0

有沒有必要通過捆綁。您可以直接使用getActivity().getIntent().getString()檢索活動意向。如果您沒有將意圖傳達給活動,則可以實施listener以在片段與活動之間進行通信。

0

你正在使用型動物字符串主項中onCreateView

變化

String address = bundle.getString("add"); 

String address = bundle.getString("address"); 
+0

好的但我改變了這個鍵值 – Hemant

+0

發生異常 – Hemant

+0

註釋行msgtv.setText(body);並看看你是否有空指針異常 –

0

當增加價值捆綁你正在做

bundle.putString("address",sms.get(position).getmAddress()); 

所以您使用的密鑰是"address"

因此所獲得的價值,當您使用

String address = bundle.getString("add"); 

鑰匙不匹配。 retreiving

String address = bundle.getString("address"); 

OR

時,當你把價值活動 sms.get(position).getmAddress()方法返回null 更改密鑰"add""address"像下面。 因此,當您將null值設置爲textview時,出現NullPointerException。

相關問題