我想在我的应用程序中显示后退箭头button,但是当我将此代码放入代码时,应用程序崩溃:
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true);
style.xml
toolbar.xml
类(而不是片段) :
public class WebViewCanale extends AppCompatActivity { Toolbar toolbar; TextView textView; WebView webView; ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview_canali); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); //Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); //FindViewById webView = (WebView) findViewById(R.id.webview); textView = (TextView) findViewById(R.id.textView); progressBar = (ProgressBar) findViewById(R.id.progressBar); //Impostazioni WebView WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setLoadsImagesAutomatically(true); webView.loadUrl(this.getIntent().getDataString()); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webView.getSettings().setAppCacheEnabled(false); //Titolo Toolbar webView.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); if (!TextUtils.isEmpty(title)) { WebViewCanale.this.setTitle(title); } } }); } }
我想知道为什么没有这个完整的答案,但最后我自己解决了这个问题:
使用以下片段在AppCompatActivity的工具栏上有后退button :
toolbar = (Toolbar) findViewById(R.id.hack_toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //do something you want } });
你也可以在Manifest声明一个ParentActivity :
添加这个主题:
在你的活动中:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@BindView(R.id.toolbar) Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_events); ButterKnife.bind(this); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onSupportNavigateUp() { onBackPressed(); return true; }
onSupportNavigateUp()只要用户select在应用程序的活动层次结构中从操作栏中向上导航,就会调用此方法。
onBackPressed(); 注意popup碎片返回堆栈或适当地完成活动。
你需要先设置支持操作栏,然后才能得到它。 所以放置下面的代码
toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);
在此代码之前
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true);