如何使用新的 Jetpack 导航在 Actionbar 中获取后退按钮
How to get Back Button in Actionbar with new Jetpack navigation
我想在新的 androidx 上的默认 Actionbar 中有一个后退按钮
Jetpack 导航 App.
我按照 google 导航入门构建导航应用程序,但我在 Actionbar 中缺少一个后退按钮,所以我在 MainActivity 的 OnCreate 中添加:
ActionBar actionbar = getSupportActionBar();
NavController nc = Navigation.findNavController(mainFragment.getView());
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(nc.getGraph()).build();
androidx.navigation.ui.NavigationUI.setupActionBarWithNavController(this,nc, appBarConfiguration);
现在,如果我不在开始主片段中,我会在 ActionBar 中看到一个后退按钮,但如果我点击该按钮,则没有后退功能。常规后退键工作正常,但我如何让操作栏后退按钮工作。
更新: 从第二个片段到第一个(main/root)片段不工作。从第三个片段到第二个片段,它正在工作。
nav-graph
试试这个:-
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do your stuff here
}
});
第二个选项是;-
@Override
public boolean onSupportNavigateUp() {
return super.onSupportNavigateUp();
// do your stuff here
}
package com.pg.navigation;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NavUtils;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity implements main_fragment.OnFragmentInteractionListener, Fragment2.OnFragmentInteractionListener, fragment3.OnFragmentInteractionListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fragment mainFragment = getSupportFragmentManager().findFragmentById(R.id.fragment);
ActionBar actionbar = getSupportActionBar();
NavController nc = Navigation.findNavController(mainFragment.getView());
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(nc.getGraph()).build();
androidx.navigation.ui.NavigationUI.setupActionBarWithNavController(this,nc, appBarConfiguration);
}
@Override
public boolean onSupportNavigateUp() {
return super.onSupportNavigateUp();
}
@Override
public void onFragmentInteraction(Uri uri) {
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
}
我想在新的 androidx 上的默认 Actionbar 中有一个后退按钮 Jetpack 导航 App.
我按照 google 导航入门构建导航应用程序,但我在 Actionbar 中缺少一个后退按钮,所以我在 MainActivity 的 OnCreate 中添加:
ActionBar actionbar = getSupportActionBar();
NavController nc = Navigation.findNavController(mainFragment.getView());
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(nc.getGraph()).build();
androidx.navigation.ui.NavigationUI.setupActionBarWithNavController(this,nc, appBarConfiguration);
现在,如果我不在开始主片段中,我会在 ActionBar 中看到一个后退按钮,但如果我点击该按钮,则没有后退功能。常规后退键工作正常,但我如何让操作栏后退按钮工作。
更新: 从第二个片段到第一个(main/root)片段不工作。从第三个片段到第二个片段,它正在工作。 nav-graph
试试这个:-
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do your stuff here
}
});
第二个选项是;-
@Override
public boolean onSupportNavigateUp() {
return super.onSupportNavigateUp();
// do your stuff here
}
package com.pg.navigation;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NavUtils;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity implements main_fragment.OnFragmentInteractionListener, Fragment2.OnFragmentInteractionListener, fragment3.OnFragmentInteractionListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fragment mainFragment = getSupportFragmentManager().findFragmentById(R.id.fragment);
ActionBar actionbar = getSupportActionBar();
NavController nc = Navigation.findNavController(mainFragment.getView());
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(nc.getGraph()).build();
androidx.navigation.ui.NavigationUI.setupActionBarWithNavController(this,nc, appBarConfiguration);
}
@Override
public boolean onSupportNavigateUp() {
return super.onSupportNavigateUp();
}
@Override
public void onFragmentInteraction(Uri uri) {
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
}