繁体   English   中英

将数据从片段传递到另一个具有相同活动的片段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM