Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中,如何在片段之间传递值? 我有一个包含4个片段的android活动 在每个片段中都有一个文本框,在第四个片段上有一个按钮 单击按钮后,不同片段中文本框中的所有值(数字)将添加在一起,并显示为Toast 注意:片段之间不得相互通信。(在片段中不使用静态变量或public,并在第4个片段中访问它。)_Java_Android_Android Fragments - Fatal编程技术网

Java 在android中,如何在片段之间传递值? 我有一个包含4个片段的android活动 在每个片段中都有一个文本框,在第四个片段上有一个按钮 单击按钮后,不同片段中文本框中的所有值(数字)将添加在一起,并显示为Toast 注意:片段之间不得相互通信。(在片段中不使用静态变量或public,并在第4个片段中访问它。)

Java 在android中,如何在片段之间传递值? 我有一个包含4个片段的android活动 在每个片段中都有一个文本框,在第四个片段上有一个按钮 单击按钮后,不同片段中文本框中的所有值(数字)将添加在一起,并显示为Toast 注意:片段之间不得相互通信。(在片段中不使用静态变量或public,并在第4个片段中访问它。),java,android,android-fragments,Java,Android,Android Fragments,现在,我有一些片段,但我需要知道在这种情况下我应该使用什么通信技术?我认为可以这样做的一种方法是使用getActivity()通过活动进行通信从每个片段开始,因为它们都共享相同的活动您可以将数据存储在MainActivity中,并从任何片段读取数据,如: //MainActivity private String mItem = ""; public void getItem(){ return this.mItem; } public void addItem(String sea

现在,我有一些片段,但我需要知道在这种情况下我应该使用什么通信技术?

我认为可以这样做的一种方法是使用getActivity()通过活动进行通信从每个片段开始,因为它们都共享相同的活动

您可以将数据存储在MainActivity中,并从任何片段读取数据,如:

//MainActivity
private String mItem = "";

public void getItem(){
    return this.mItem;
}

public void addItem(String searchItem){
    this.mItem += searchItem;
}


//FRAGMENT 1
public void onButtonClick(){        
    //adding a string to your item in the MainActivity
    ((MainActivity)getActivity()).addItem("String from Frag1");

}



//FRAGMENT 4
private void onButtonClick{
    //reading the string
    String toastMessage =  ((MainActivity)getActivity()).getItem();
}

在调用另一个片段之前,请在下面输入代码:

Bundle bundle=new Bundle();
            bundle.putString("MY_DATA", mStringData);
            mFragment.setArguments(bundle);
在commit()之后是mFragment。在要获取此数据的第二个片段中,请使用:

String data = getArguments().getStringExtra("MY_DATA");
在您的案例中,另一种方法是使用SharedReference 在首选项中保存数据,如:

SharedPreference mPreference=PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
mPreferences.edit().putString(“我的数据”,mStringData.commit()

要在另一个片段中获取此数据,请使用:

String data = mPrefrences().getStringExtra("MY_DATA");
创建此接口并将其实现到MainActivity:

    Public class MainActivity extends Activity implements IAddItem{
      private String mValue; 
      public void addItem(int fragID, String value){
         switch(fragID){
           case R.id.frag_1:
            mValue = value;
            break;
           case //Do your other code here
        }
      }

   }
在其他片段中使用它时使用:
private IAddItem mCallback

 @Override
public void onAttach(Activity activity) {
    super.onAttach(activity);

    // This makes sure that the container activity has implemented
    // the callback interface. If not, it throws an exception
    try {
        mCallback = (IAddItem) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString()
                + " must implement IAddItem");
    }
}

并这样调用它:
mCallback.addItem(R.id.frag_1,text.getText().toString())

。检查文档使用回调方法。。。创建一个接口在3个片段中实现它获取3个片段中的值。。。通过parentactivity创建第二个接口onclick implement,并在第四个片段中使用callback@bean_droid你能用get value和onclick接口的代码解释一下吗?@Duke你明白了吗?@A.S你的解决方案成功了吗
 @Override
public void onAttach(Activity activity) {
    super.onAttach(activity);

    // This makes sure that the container activity has implemented
    // the callback interface. If not, it throws an exception
    try {
        mCallback = (IAddItem) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString()
                + " must implement IAddItem");
    }
}