- A11-Intent ver02-04
- activity_my_second.xml
- Add a button vv_btnTo1
- Center it
- MainActivity.java no change
- Three ways to return
- 1.Toolbar button at the top
- 2.Button
- 3.Navigation button at the buttom
- 1. MySecondActivity.java Toolbar Button android.R.id.home:
public class MySecondActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
...
if (getIntent() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setTitle("Back to First");
}
}
// Method 1 android.R.id.home:
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent lv_it = new Intent(MySecondActivity.this, MainActivity.class);
startActivity(lv_it);
return true;
}
return super.onOptionsItemSelected(item);
}
}
- 2. MySecondActivity.java Button Listener
protected void onCreate(Bundle savedInstanceState) {
...
binding.vvBtnTo1.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent lv_it = new Intent(MySecondActivity.this, MainActivity.class);
startActivity(lv_it);
}
});
- 3. MySecondActivity.java Navigation Button
By Default The Button Has the Function
No Code Needed
- 3a. MySecondActivity.java Navigation Button onBackPressed()
@Override
public void onBackPressed() {
Intent lv_it = new Intent(MySecondActivity.this, MainActivity.class);
startActivity(lv_it);
}
If we comment this out, then all 3 ways won't back
- 1a. MySecondActivity.java Toolbar Button
@Override
public boolean onSupportNavigateUp() {
Intent lv_it = new Intent(MySecondActivity.this, MainActivity.class);
startActivity(lv_it);
return true;
}
*** However, if you comment out onOptionsItemSelected intent creation 2 lines
*** won't work
*** Why? if you comment out entire onOptionsItemSelected(), it works again
*** if you override onOptionsItemSelected, then onSupportNavigateUp will not be called.
*** https://stackoverflow.com/questions/18780112/onsupportnavigateup-not-called/45076058
- 3b. MySecondActivity.java Navigation Button
Remove everything
//// HERE https://developer.android.com/guide/navigation/navigation-custom-back
// This callback will only be called when MyFragment is at least Started.
OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
@Override
public void handleOnBackPressed() {
// Handle the back button event
//onBackPressed();
getSupportActionBar().setTitle("Back");
Intent lv_it = new Intent(MySecondActivity.this, MainActivity.class);
startActivity(lv_it);
}
};
getOnBackPressedDispatcher().addCallback(this, callback);
// The callback can be enabled or disabled here or in handleOnBackPressed()
- What is going on?
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
if (getIntent() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setTitle("Back to First");
}
//// HERE https://developer.android.com/guide/navigation/navigation-custom-back
// This callback will only be called when MyFragment is at least Started.
OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
@Override
public void handleOnBackPressed() {
// Handle the back button event
//onBackPressed();
getSupportActionBar().setTitle("Back");
Intent lv_it = new Intent(SecondActivity.this, MainActivity.class);
startActivity(lv_it);
}
};
getOnBackPressedDispatcher().addCallback(this, callback);
// The callback can be enabled or disabled here or in handleOnBackPressed()
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
}
- A10-RV ver06
- Combination of A10-RV ver05 and A11-Intent ver06
- Follow A11-Intent ver05 to create res/anim folder and copy 4 files
- Follow A11-Intent ver01 to create MyListDetailsActivity (java and xml)
- MainActivity.java pass MainActivity.this to MyRecyclerViewAdapter.java
- MyRecyclerViewAdapter.java create intent and pass OSName as String
- MyListDetailsActivity.java update textview and enable toolbar button to return
- activity_my_list_details.xml
vv_tvSub
centered and 24sp
- MainActivity.java
change
lv_adapter = new MyRecyclerViewAdapter(lv_data01, lv_data02);
to
lv_adapter = new MyRecyclerViewAdapter(lv_data01, lv_data02, this);
or
lv_adapter = new MyRecyclerViewAdapter(lv_data01, lv_data02, MainActivity.this);
- MyRecyclerViewAdapter.java
private final ArrayList<String> mv_data01, mv_data02;
add
Activity cv_activity;
public MyRecyclerViewAdapter(ArrayList<String> data01, ArrayList<String> data02, Activity activity) {
mv_data01 = data01;
mv_data02 = data02;
cv_activity = activity;
}
...
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent lv_it = new Intent(cv_activity, MyListDetailsActivity.class);
lv_it.putExtra("OSName",
(String) mv_data02.get(holder.getAdapterPosition()).toString());
cv_activity.startActivity(lv_it);
cv_activity.overridePendingTransition(R.anim.anim_slide_in_left, R.anim.anim_slide_out_left);
}
});
...
- MyListDetailsActivity.java
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
if (getIntent() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("Back");
Bundle extras = getIntent().getExtras();
String lv_str = extras != null ? extras.getString("OSName") : "Empty";
TextView lv_tv = (TextView) findViewById(R.id.vv_tvSub);
lv_tv.setText("You Selected - " + lv_str);
}
...
@Override
public boolean onSupportNavigateUp() {
Intent lv_it = new Intent(MyListDetailsActivity.this, MainActivity.class);
this.startActivity(lv_it);
this.overridePendingTransition(R.anim.anim_slide_in_right, R.anim.anim_slide_out_right);
return true;
}
...