簡體   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