2016-11-16 3 views
0

Моя активность расширяет ActionBarActivity и мы устанавливаем кнопку назад навигации в OnCreate():активность не возвращается к предыдущей деятельности при нажатии на ActionBar назад джойстике

@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); 
} 

ответ

5

Ваш идентификатор неправильный. поэтому, пожалуйста, измените свой идентификатор «R.id.home» на «android.R.id.home:».

switch (item.getItemId()) 
{ 
    case android.R.id.home: 
     finish(); 
     return true; 
} 

Попробуйте это.

0

смотрите ниже код

@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); 
} 

}

0

Вы должны вызвать onBackPressed функцию

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

Вам нужно переопределить onBackPressed метод для обработки назад (кнопка домой) на ActionBar.

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    // your code here 
    // finish(); 
} 
0

Вы должны установить панель инструментов, прежде чем получить.

@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*/ 
     } 
    }); 
} 
0

Для обеспечения надлежащей навигации, вы должны:

Определить родительскую активность в манифесте.

<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); 

Там должна быть панель инструментов в XML из MainActivity. И затем переопределите onOptionsItemSelected.

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
switch (item.getItemId()) 
{ 
    case android.R.id.home: 
     finish(); 
     return true; 
} 
} 

Вместо того, чтобы использовать отделку(), вы должны рассмотреть возможность использования NavUtils.navigateUpFromSameTask(this) или других подобных методов класса NavUtils.

Используйте launchModes как singleTop, чтобы предотвратить перезагрузку родительской активности.

Более подробную информацию о правильной навигации можно найти here.

Смежные вопросы