简体   繁体   English

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

[英]Pass Data from Fragment to another fragment, same activity

im trying to send data from fragment 1, to fragment 2. 我试图将数据从片段1发送到片段2。

Im getting a NullPointerException , and i dont quite know why.. 我得到了NullPointerException ,我不知道为什么。

I have searched on google and found a lot of articles about, what im trying to do, but i just cant figure out how the general way is done, and if its even possible=( 我在Google上进行搜索,发现了很多有关我想做的事情的文章,但我只是想不通一般的方法,甚至可以做到=(

sorry for using bad english, and im a beginner so... 很抱歉使用英语不好,我是初学者,所以...

Code used in Fragment 1 片段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");
}

Code Used in Fragment 2 片段2中使用的代码

  public void getData(String message){
        edt.setText(message);
        Log.i("Disp", "ListHistoryFragment " + message);
    }

Code used in Activity 活动中使用的代码

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)

EDIT: 编辑:

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {

                    SM.send(message);
                }

To share data between fragments and activities you should keep an instance of the data you are planning to share in your activity. 要在片段和活动之间共享数据,应保留一个计划在活动中共享的数据实例。 SharedPreferences are intended to other purposes, for example, storing data that you will need whenever your application starts. SharedPreferences用于其他目的,例如,存储应用程序启动时所需的数据。

Inside your activity declare a protected/public String called message for example. 例如,在您的活动内部声明一个称为message的受保护/公共字符串。

public class MyActivity extends .... {

    public String message;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        ...
}

Inside your first fragment, whenever you want to save your String use. 在您的第一个片段中,每当您要保存String使用时。

((NAMEOFYOURACTIVITY) getActivity()).message = "THE STRING YOU WANT TO SHARE";

Inside your second fragment, to retrieve your message use: 在第二个片段中,要检索消息,请使用:

((NAMEOFYOURACTiIVTY) getActivity()).message;

For example: 例如:

Log.i("The string in","my activity is: "+((NAMEOFYOURACTiIVTY) getActivity()).message);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将数据从 Activity 传递到另一个 Activity 中的 Fragment - Pass data from Activity to Fragment in another Activity 将数据从活动传递到另一个片段 - Pass data from activity to another fragment 如何在Android的同一活动中将日期从一个片段传递到另一个片段? - How to pass date from one fragment to another in the same activity in Android? 如何在相同的片段活动中将数据从片段发送到片段? - How to send data from fragment to fragment within same fragment activity? 将数据对象从另一个活动传递到一个活动(片段-&gt;其活动-&gt;新活动) - Pass data object to an Activity from another activity (Fragment -> its Activity-> new Activity) 将复选框输入从一个片段传递到同一活动中的另一个片段 - Passing checkbox input from one fragment to another fragment in the same activity 来自同一活动中另一个片段的片段访问小部件 - fragment access widget from another fragment in the same activity 初始加载Fragment时,将数据从Activity传递到Fragment - Pass Data to Fragment from Activity, when intially loaded with Fragment 从活动传递数据以查看寻呼机片段 - Pass data from activity to view pager fragment 通过strartActivityforResult()将数据从片段传递到活动 - pass data from fragment to activity by strartActivityforResult()
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM