我试图将数据从片段1发送到片段2。
我得到NullPointerException
,我不知道为什么......
我在谷歌搜索过并发现了很多关于我试图做什么的文章,但我只是想弄清楚一般方法是如何完成的,如果它甚至可能=(
抱歉使用不好的英语,我是初学者......所以...片段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);
}
Log Cat:
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);
}
答案 0 :(得分:0)
要在片段和活动之间共享数据,您应该保留计划在活动中共享的数据实例。 SharedPreferences用于其他目的,例如,存储应用程序启动时所需的数据。
在您的活动中声明一个名为message的受保护/公共字符串,例如。
public class MyActivity extends .... {
public String message;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
}
在第一个片段中,每当您想要保存字符串时使用。
((NAMEOFYOURACTIVITY) getActivity()).message = "THE STRING YOU WANT TO SHARE";
在第二个片段中,要检索您的消息,请使用:
((NAMEOFYOURACTiIVTY) getActivity()).message;
例如:
Log.i("The string in","my activity is: "+((NAMEOFYOURACTiIVTY) getActivity()).message);