0

2 つのアクティビティ (A と B) があり、フラグメント F はアクティビティ A に含まれています。アクティビティ B からフラグメント F に文字列を送信したいのですが、どうすればよいですか? これが私のコードです:

アクティビティ B

public final static String EXTRA_MESSAGE = "com.sample.MESSAGE";

// onClick get button from activity B layout
public void get(View view) {
    Intent intent = new Intent(this, ActivityA.class);
    TextView textView = (TextView)findViewById(R.id.coordinates);
    String message = textView.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

フラグメントF

EditText editText;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    String num = getActivity().getIntent().getStringExtra("EXTRA_MESSAGE");

    View v = inflater.inflate(R.layout.tab1, container, false);

    // EditText from fragment F layout
    editText = (EditText) v.findViewById(R.id.edit_coordinates);    
    editText.setText(num);
    return v;
}

デバイスで実行してもエラーは発生しませんが、EditText に文字列が取得されません

4

5 に答える 5

4

正しい値を渡す必要があります。

    String num = getActivity().getIntent().getStringExtra("com.sample.MESSAGE"); 
于 2013-11-06T08:12:53.887 に答える
1

in fragmentに置き換える必要が"EXTRA_MESSAGE"あります"com.sample.MESSAGE"

だから交換

 String num = getActivity().getIntent().getStringExtra("EXTRA_MESSAGE");// OR Double quotes

String num = getActivity().getIntent().getStringExtra("com.sample.MESSAGE");
于 2013-11-06T08:29:11.403 に答える
0

結合された方法または分離された方法のどちらで文字列を渡すかによって異なります。

Fragment のデフォルトの静的インスタンスを使用して、文字列を引数としてバンドルに渡すことができます。

推奨されませんが、文字列を引数として Fragment のデフォルト以外のコンストラクターを初期化できる可能性があります。

または、分離した方法で行いたい場合は、Greenrobot の Eventbus を使用して、文字列をアクティビティからフラグメントに渡すことができます。ドキュメントを調べて、目的に合っているかどうかを確認してください。

于 2013-11-06T08:16:53.350 に答える
0

これを試して :

String num = getArguments().getStringExtra("EXTRA_MESSAGE");
于 2013-11-06T08:43:48.440 に答える