私は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を作成してアプリケーションをテストするだけです。
私たちとあなたのコードを共有してください。 –
plzにur getextraコードとエラーログを貼り付けます。 –
が更新されました。これらは自分のコードです – ranysella