2015-08-11 4 views
4

Я пытаюсь вручную выполнить действия, которые должны выполняться при нажатии кнопки «вверх» на панели действий, но по какой-то причине ничего не происходит, когда я нажимаю ее.Кнопка Android Up не работает

вот мой код:

public class ActivityOne extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_activity_one); 
     Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar_actionbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     Button button = (Button)findViewById(R.id.btn1); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       openActivityTwo(); 
      } 
     }); 
     Button button2 = (Button)findViewById(R.id.btn2); 
     button2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       openActivityThree(); 
      } 
     }); 
    } 


    void openActivityTwo(){ 
     Intent intent = new Intent(this, ActivityTwo.class); 
     startActivity(intent); 
    } 

    void openActivityThree(){ 
     Intent intent = new Intent(this, ActivityThree.class); 
     startActivity(intent); 
    } 


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

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     else if(id == R.id.homeAsUp){ 
      Log.i("","Up is pressed"); 
      finish(); 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

Я понимаю, что я должен явно назначить родительскую активность для деятельности Я хочу осуществить навигацию по файлу манифеста, но проблема в том, что эта деятельность имеет несколько родителей, поэтому я думал, что при вызове метода finish(), когда кнопка вверх нажата на эту операцию, будет лучший подход.

Я уже пробовал и id == R.id.home, и id == R.id.homeAsUp, и они оба не работают. Я не знаю, если это потому, что я использую AppCompactActivity или что Пожалуйста, помогите

+0

вы начинаете другое действие при нажатии кнопки, а не в действииButtonBack нажмите –

ответ

10

Вот как можно реализовать это, попробуйте этот код

использование android.R.id.home вместо R.id. дома или R.id.homeAsUp

public boolean onOptionsItemSelected(final MenuItem item) { 

     switch (item.getItemId()) { 
      case android.R.id.home: 
       //use onBackPressed() OR finish(); 
       return true; 

      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
+1

Я куплю вам кексы однажды, большое вам спасибо! – spongyboss

1

правильный способ сделать это, чтобы переопределить public boolean onNavigateUp() так же, как переопределение onBackPressed().