0

こんにちは、あなたが私を助けてくれることを願っています:

3 つのアクティビティがあります。Activity1 --> Activity2 --> Activity3

Activity1 と 2 には、EditText Extra からの文字列を配置する Intent があります。

そしてActivity3では両方の文字列を受け取りたいのですが、Activity3はActivity2(前のアクティビティ)からのみIntentを受け取るようにしています。

Activity1 のコードは次のとおりです。

public void onClick(View v) {

    Intent intent = new Intent (this, Activity2.class);
    EditText et1 = (EditText) findViewById(R.id.editText1);
    String name = et1.getText().toString();

        if (name.length() == 0) {
            new AlertDialog.Builder(this).setMessage(
                    R.string.error_name_missing).setNeutralButton(
                    R.string.error_ok,
                    null).show();
            return;
        }

        intent.putExtra(konto_name1, name);
        startActivity(intent);

    }   

アクティビティ 2 から:

public void onClick(View v) {

        Intent intent = new Intent (this, Activity3.class); 
        EditText et2 = (EditText) findViewById(R.id.editText2);

        String value = et2.getText().toString();

        if (value.length() == 0) {
            new AlertDialog.Builder(this).setMessage(
                    R.string.error_value_missing).setNeutralButton(
                    R.string.error_ok,
                    null).show();
            return;
        }

        intent.putExtra(start_value1, value);
        startActivity(intent);      
    }
4

3 に答える 3

1

他の回答で説明されているように、インテントからインテントに渡すことができます。ただしSharedPreferences、作業を容易にするために使用することもできます。

SharedPreferences prefs = getDefaultSharedPreferences(this);
Editor edit = prefs.edit();
edit.putString(konto_name1, name)
edit.commit();

または、ワンライナーとしてそれが必要な場合:

PreferenceManager.getDefaultSharedPreferences(this).edit().putString(konto_name1, name).commit();

次に、インテントから文字列を取得する代わりに、次を使用します。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String newString = prefs.getString(konto_name1, "");

Intent から Intent に渡された文字列を追跡する必要はありません。

繰り返しますが、ワンライナーとして上記:

PreferenceManager.getDefaultSharedPreferences(this).getString(konto_name1, "");

Activity2 の文字列でも同じことを行う必要があります。Activity(1/2) で項目をクリックするたびに、設定が上書きされますのでご安心ください。getString()取得したいものが存在しない場合に備えて、 の 2 番目のパラメーターはデフォルトの文字列であることに注意してください。

于 2013-08-12T14:10:31.100 に答える
1

2 番目のアクティビティ コードを次のように変更します。2番目のアクティビティで、別の意図があることを確認してください。最初のアクティビティの意図とは関係ありません。したがって、1 番目のアクティビティの意図から 2 番目のアクティビティの意図までの値を取得する必要があります。

Intent intent = new Intent (this, Activity3.class);



EditText et2 = (EditText) findViewById(R.id.editText2);

String value = et2.getText().toString();

if (value.length() == 0) {
    new AlertDialog.Builder(this).setMessage(
            R.string.error_value_missing).setNeutralButton(
            R.string.error_ok,
            null).show();
    return;
}

intent.putExtra(start_value1, value);

intent.putExtra(konto_name1,getIntent().getStringExtra(konto_name1));//Add this line in your code
startActivity(intent);


}
于 2013-08-12T13:01:23.597 に答える