簡體   English   中英

單擊ActionBar后退導航按鈕時,活動未返回到先前的活動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM