将值从一个片段发送到另一个片段

时间:2014-01-14 16:03:22

标签: android android-fragments

我有一个名为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做到这一点,但不知道如何!!

5 个答案:

答案 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 = "";
}