Android Up Button Doesn't Work

I am trying to manually implement the actions that should be performed when I click the up button on the action bar, but for some reason nothing happens when I click on it.

here is my code:

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

I understand that I need to explicitly assign a parent action for the activity , I want to implement navigation on the manifest file , but the problem is that there are several parents in this activity, so I thought t21>, when the up button is pressed on this operation, it will better approach.

I have already tried both id == R.id.home and id == R.id.homeAsUp , and both of them do not work. I do not know if this is because I use AppCompactActivity or what to help

+4
java android android-activity android-studio r.java-file
Aug 11 '15 at 11:05
source share
2 answers

Here is how you can implement this, try this code

use android.R.id.home instead of R.id.home or 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); } } 
+11
Aug 11 '15 at 11:10
source share

The correct way to do this is to override public boolean onNavigateUp() in the same way as overriding onBackPressed() .

+1
Jan 22 '18 at 12:01
source share



All Articles