[英]Activity is not returning to previous activity while clicking on ActionBar back navigation button
我的活動擴展了ActionBarActivity,我們在onCreate()中設置了一個后退導航按鈕:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(getSupportActionBar()!=null)
{
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
對於后按,按給定的覆蓋方法完成此活動,但不會移至上一個活動
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
您的身份證是錯誤的。 因此,請將您的ID“ R.id.home”更改為“ android.R.id.home:”。
switch (item.getItemId())
{
case android.R.id.home:
finish();
return true;
}
嘗試這個。
請參考下面的代碼
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; goto parent activity.
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
您需要調用onBackPressed函數
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
onBackPressed();
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
您需要重寫onBackPressed方法來處理ActionBar上的后退按鈕(主頁按鈕)。
@Override
public void onBackPressed() {
super.onBackPressed();
// your code here
// finish();
}
您必須先設置工具欄。
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar mToolBar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(mToolBar);
getSupportActionBar().setTitle("Some titile);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
change code here*/
}
});
}
為了提供正確的向上導航,您必須:
在清單中定義父活動。
<activity
android:name=".MainActivity"
android:parentActivityName=".HomeActivity"
....>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".HomeActivity" />
</activity>
在MainActivity中:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
MainActivity的xml中應該有一個工具欄。 然后重寫onOptionsItemSelected。
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
finish();
return true;
}
}
而不是使用finish(),應考慮使用NavUtils.navigateUpFromSameTask(this)
或NavUtils類的其他此類方法。
使用諸如singleTop之類的launchModes可以防止重新加載父活動。
有關適當的向上導航的更多信息,請參見此處 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.