-1

私は、リストビューを含むOverviewActivityを持っています。アイテムが選択されると、DetailActivityに移動するためのインテントが作成され、intを渡します。Android:インテントで渡されたデータが、より深い階層から戻ってきたら消えます。

このintはプライベート変数に割り当てられ、データベースのクエリに使用されます。

DetailActivityコード:DetailActivityで

private int mIssueId; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_issue_detail); 

    mIssueId = getIntent().getIntExtra(IssueOverviewFragment.INTENT_ISSUE_ID, -1); 
    ... 
} 

私はGraphActivityに行くことができます。しかし、GraphActivityでupButtonを押すと、変数がDetailActivityで-1になったため、アプリケーションがクラッシュします(したがって、データベースは正しく照会できません)。

階層は次のとおりです。 OverviewActivity - > DetailActivity - > GraphActivity

GraphActivityコード:

protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_graph); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     ... 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main_detail, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_logout: { 
      Utility.redirectToLogin(this); 
      break; 
     } 
     case android.R.id.home: 
      NavUtils.navigateUpFromSameTask(this); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

は、どのように私はDetailActivityの私mIssueId属性の値を保持しますか?

+0

あなたのアクティビティコードを投稿してください。あなたは "アップ"ボタンの機能をオーバーライドしていますか? –

+0

多分あなたはどこかでインテントを変更しています、あなたのアクティビティコードを投稿してください。 –

答えて

0

ようになるはずです。 Activity1がコントロールをActivity2に渡すと、アクティビティーの動作に主に関係します。

複雑な階層間で共有する必要がある情報や、アプリケーション全体で利用できる情報がある場合は、永続性が必要な場合は共有の環境設定を選択し、アプリケーションの実行中はデータのみが必要な場合はシングルトンクラスを使用しますが走っています。

これは、全体のアプリが利用できるに情報を維持するシングルトンクラスのサンプルです:

public class AppData { 
    private static AppData ourInstance = new AppData(); 

    public int score; 

    public static AppData getInstance() { 
    return ourInstance; 
    } 
} 

そして、そのアクセス方法:

AppData.getInstance().score = 100; 

はそれがお役に立てば幸いです。

0

DetailActivityにインテントを取得する際に問題が発生したため、デフォルト値になっているようです。

mIssueId = getIntent().getExtras().getInt(); 

しかし、私は問題がおそらくあなたが意図をintに入れていると思います。

それは意図が活動の間で情報を渡すために意図し

Intent intent = new Intent(context, DetailActivity.class); 
intent.putExtra(IssueOverviewFragment.INTENT_ISSUE_ID, mIssueId); 
startActivity(intent); 
+0

このインテントはIssueOverviewFragmentに由来し、問題はありません。しかし、問題は、GraphActivityからDetailActivityに戻ったときに、この余分な値が以前に取得した値を保持していないことです。 – Matt

関連する問題