![](/img/trans.png)
[英]Pass data from Activity to Fragment in another Activity
[英]Pass Data from Fragment to another fragment, same activity
我試圖將數據從片段1發送到片段2。
我得到了NullPointerException
,我不知道為什么。
我在Google上進行搜索,發現了很多有關我想做的事情的文章,但我只是想不通一般的方法,甚至可以做到=(
很抱歉使用英語不好,我是初學者,所以...
片段1中使用的代碼
public interface DataMessage {
public void send(String message);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {SM = (DataMessage)activity;
}catch (ClassCastException e){
throw new ClassCastException("Implement message interface");
}
片段2中使用的代碼
public void getData(String message){
edt.setText(message);
Log.i("Disp", "ListHistoryFragment " + message);
}
活動中使用的代碼
public class MyActivity extends ActionBarActivity
implements NavigationDrawerFragment.NavigationDrawerCallbacks, ListHistoryFragment.DataMessage
...
@Override
public void send(String message) {
//DisplayFragment DispFrag = (DisplayFragment) getSupportFragmentManager().findFragmentById(R.id.fragmenttest);
DisplayFragment DispFrag = new DisplayFragment();
FragmentTransaction Transfer = getSupportFragmentManager().beginTransaction();
DispFrag.getData(message);
Transfer.replace(R.id.container, DispFrag).addToBackStack(null).commit();
Log.i("Acitivyt", "ListHistoryFragment " + message);
}
日志貓:
1-22 11:39:01.580 22399-22399/rampanere.packed.package.nl E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at android.rampa.pack.nl.SQL.DisplayFragment.getData(DisplayFragment.java:152)
at android.rampa.pack.nl.MyActivity.send(MyActivity.java:265)
at android.rampa.pack.nl.SQL.ListHistoryFragment$1.onItemClick(ListHistoryFragment.java:73)
編輯:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
SM.send(message);
}
要在片段和活動之間共享數據,應保留一個計划在活動中共享的數據實例。 SharedPreferences用於其他目的,例如,存儲應用程序啟動時所需的數據。
例如,在您的活動內部聲明一個稱為message的受保護/公共字符串。
public class MyActivity extends .... {
public String message;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
}
在您的第一個片段中,每當您要保存String使用時。
((NAMEOFYOURACTIVITY) getActivity()).message = "THE STRING YOU WANT TO SHARE";
在第二個片段中,要檢索消息,請使用:
((NAMEOFYOURACTiIVTY) getActivity()).message;
例如:
Log.i("The string in","my activity is: "+((NAMEOFYOURACTiIVTY) getActivity()).message);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.