我有一个名为AddPlayerFragment的片段,它接受一些字符串。我是这样做的..
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
alert.setTitle("Add Player");
// Set an EditText view to get user input
final EditText input = new EditText(getActivity());
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString();
dialog.dismiss();
return;
}
});
alert.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
return;
}
});
return alert.show();
}}
我想从变量值获取此字符串值到另一个名为Scorecard_Fragment的Fragment。我是android开发的绝对初学者。有什么建议吗?我有一些线索可以通过Bundle或Intent做到这一点,但不知道如何!!
答案 0 :(得分:2)
像这样传输数据 -
Bundle bundle = new Bundle();
bundle.putString("message", value);
Scorecard_FragmentfragInfo = new Scorecard_Fragment();
fragInfo.setArguments(bundle);
transaction.replace(R.id.fragment_single, fragInfo);
transaction.commit();
答案 1 :(得分:2)
答案 2 :(得分:0)
简单...使用共享偏好?
final SharedPreferences prefs = getSharedPreferences("my_prefs, 0);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString();
prefs.edit().putString("myvalue", value).commit();
dialog.dismiss();
return;
}
});
在您的片段上,您可以检索它,然后按照您的方法进行操作:
final SharedPreferences prefs = getSharedPreferences("my_prefs", 0);
String myPreviousValue = prefs.getString("myvalue", "");
或者使用Amit发布的解决方案与Bundles一起使用。在我看来,SharedPreferences更好,因为你可以通过将bundle转移到你需要值的每个片段,轻松地将它们放在任何地方以便进一步使用而无需硬编码。
答案 3 :(得分:0)
在Scorecard_Fragment中创建一个公共变量:
public String variable;
然后在AddPlayerFragment中:
String value = input.getText().toString();
Scorecard_Fragment fragInfo = new Scorecard_Fragment();
fragInfo.variable = value;
transaction.replace(R.id.fragment_layout, fragInfo);
transaction.commit();
答案 4 :(得分:0)
解决了问题.. AddplayerFragment
Bundle bundle = new Bundle();
bundle.putString("message", value);
MyBundles.scorePLayer = value;
((Scorecard_Fragment) MainActivity.getFragment()).scorePlayer(value);
通过这个课程
public class MyBundles {
public static String scorePLayer = "";
}