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