2016-08-03 5 views
0

私は3つのアクティビティを持っています。 A、B、C アクティビティAのアクティビティBのインテントからgetExtraで文字列を設定しました。 アクティビティCから別のエクストラを取得し、アクティビティBに戻す必要があります。3つのアクティビティの間のインテントから余分に保存

アクティビティB、私はアクティビティAからエクストラを紛失しました。 私はsavedPreferencedを使用しようとしましたが、起動をsingleTopに変更しました。 しかし、私のアプリはクラッシュしました。 余分なインテントを保存するにはどうすればよいですか?

私は完全なチュートリアルを見つけることができません。

私は初心者です、いくつかの詳細な説明が必要です。ありがとう。

これは私がBにアクティビティAから余分を送信するために使用されるコードである:

void sendTxt() { 
    String shareBody = getPlainDocumentText(); 
    if (shareBody == null) { 
     Toast.makeText(A.this, R.string.empty_document, Toast.LENGTH_LONG).show(); 
     return; 
    } 
    Intent i = new Intent(A.this, B.class); 
    String txt = shareBody; 
    i.putExtra("file", txt); 
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(i); 
    finish(); 
    Screen.unlockOrientation(A.this); 
} 

これは私がAからBにgetExtraに使用されるコードである:

public String teks; 
if (savedInstanceState == null){ 
     Bundle extras = getIntent().getExtras(); 
     if(extras==null){ 
      teks = null; 
     }else{ 
      teks = extras.getString("file"); 
     } 
    }else{ 
     teks = (String) savedInstanceState.getSerializable("file"); 
    } 
    t = (TextView)findViewById(R.id.txt); 
    t.setText(teks); 

、私は活動から移動CにB:アクティビティ・Cで

Intent i = new Intent(B.this, C.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 
finish(); 

、私は戻ってBに取得し、Bに余分送る:

Bで
Intent i = new Intent(C.this, B.class); 
String path = dir.getAbsolutePath().toString(); 
i.putExtra("dir", path); 
setResult(RESULT_OK, i); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 
finish(); 

私はCから余分受けたが、私はエミュレータを使用していなかったので、私は、ログを表示することはできませんA.

から余分を失いました。私はラップトップが仮想エミュレータをサポートしていないため、apkを作成してアプリケーションをテストするだけです。

+1

私たちとあなたのコードを共有してください。 –

+0

plzにur getextraコードとエラーログを貼り付けます。 –

+0

が更新されました。これらは自分のコードです – ranysella

答えて

0

Bアクティビティを終了(破棄)して値が失われるため、BアクティビティをCからコールした後、 Cアクティビティから呼び出してBアクティビティを再作成します。

この問題では、Shared Pref likeの値を保存することができます。

SharedPreferences.Editor editor = getSharedPreferences("your_pref_name", MODE_PRIVATE).edit(); 
editor.putString("key_name", extra_value); 
editor.commit(); 

が、これはあなたを助ける

SharedPreferences prefs = getSharedPreferences("your_pref_name", MODE_PRIVATE); 
String name = prefs.getString("key_name", ""); 

ホープ・アクティビティBでそれを見るの活動に優先して、それを保存します。

関連する問題