2013-04-18 24 views
10

ホームボタンを「戻る」ボタンとして機能させるには、次のコードがあります。私が直面している問題は、実際のバックボタンを使用すると、単に前のアクティビティに戻ります。ホームボタンを使用すると、ページがリロードされるので、以前に行ったことは失われます。私はそれが私が行方不明の単純なものだと確信しています。Android:前のアクティビティをリロードせずに戻るボタンとしてアイコンを使用

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.census_management_search, menu); 
    ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    // Handle item selection 
    switch (item.getItemId()) 
    { 
     case android.R.id.home: 
      Intent intent = new Intent(this, CensusManagementActivity.class); 
      NavUtils.navigateUpTo(this, intent); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

答えて

15

代わりのIntentNavUtilsonBackPressed()方法を使用してみてください。

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    // Handle item selection 
    switch (item.getItemId()) 
    { 
     case android.R.id.home: 
      onBackPressed(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 
+0

あなたの答えの両方働いていた、違いは何ですか? – Jhorra

+2

['onBackPressed()'](http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/app/)を呼び出すことをお勧めします。 Activity.java#Activity.onBackPressed%28%29)これはフラグメントのバックスタックをチェックし、空であれば 'finish()'を呼び出します。 – vasart

+0

おかげさまでアクティビティを再ロードせずに完全に動作します。 –

3

[ホーム/上へ]ボタンは、新しいアクティビティをリロードすることになっています。あなたは戻るボタンの機能をエミュレートしたい場合は、前の活動に戻りますfinish()を呼び出すことができます。

case android.R.id.home: 
     finish(); 
     return true; 
+0

両方の答えがうまくいった、違いは何ですか? – Jhorra

+0

'finish()'は現在のアクティビティを常に閉じますが、 'onBackPressed()'はバックスタックに 'Fragment'がある場合に処理します。 – ianhanniballake

+0

私はonBackPressed()とfinish()を試してみたところ、私の以前のアクティビティはリロードされています。以前のアクティビティではフラグメントが使用され、バックアイコンを押すたびにリフレッシュされます。電話で戻るボタンをクリックすると正常に動作します。 – emir

関連する問題