java - 为什么我的工具栏中的帮助按钮不起作用
问题描述
当我单击帮助时,应用程序突然没有响应。我在应用程序中添加了一些工具栏,关于工作正常,但它带有应用程序突然停止的帮助按钮。
这是我的代码 mainactivity 代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detection);
//this hides the back button and I thank you
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setTitle(getString(R.string.progress_dialog_title));
// Disable button "detect" as the image to detect is not selected.
setDetectButtonEnabledStatus(false);
LogHelper.clearDetectionLog();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.menu, menu);
return true;
}
@SuppressLint("NonConstantResourceId")
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.menuAbout:
View messageView = getLayoutInflater().inflate(R.layout.about, null, false);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.smile);
builder.setTitle(R.string.app_name);
builder.setView(messageView);
builder.create();
builder.show();
break;
case R.id.menuHelp:
Intent help = new Intent(this, HelpActivity.class);
startActivity(help);
break;
}
return true;
}
那么这是帮助活动代码
public class HelpActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_help);
getSupportActionBar().hide();
// Toolbar toolbar = (Toolbar)findViewById(R.id.app_bar);
// setSupportActionBar(toolbar);
ActionBar bar = getSupportActionBar();
bar.setDisplayHomeAsUpEnabled(true);
bar.setTitle(R.string.help);
}
}
那么这里是菜单的xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menuHelp"
android:title="Help"
android:icon="@drawable/ic_help_black_24dp"/>
<item
android:id="@+id/menuAbout"
android:title="About"
android:icon="@drawable/ic_info_black_24dp"/>
<!-- <item
android:id="@+id/menuLogout"
android:title="Logout" /> -->
</menu>
那么这是activity_help的xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.HelpActivity">
<TextView
android:id="@+id/help_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/help_tip"
android:textSize="17sp"
android:textColor="@android:color/black"
android:layout_margin="10dp"
/>
</RelativeLayout>
我应该怎么办?请帮帮我。谢谢
解决方案
case R.id.menuHelp:
// Toast.makeText(this, "You clicked settings", Toast.LENGTH_SHORT).show();
Intent help = new Intent(this, HelpActivity.class);
startActivity(help);
break;
问题
关键字this
是指菜单帮助项,而不是活动。由于 Intent 的第一个参数是 packageContext,this
因此不起作用。
解决方案
只需this
将 Intent 更改为 MainActivity.this 即可将活动称为包上下文。
查看文档以获取更多信息。
推荐阅读
- jquery - 引导日期时间选择器
- python - 使用正则表达式的 Strip() 函数
- java - Redisson:在 finalize 方法中关闭客户端
- javascript - Javascript 打印 div 在 Safari 网络浏览器中不起作用
- c# - 当 2 个方法在同一个类中时,使用正确的参数调用验证方法
- c# - System.Data.Odbc 未被引用
- clojure - Figwheel 环境变量
- javascript - 根据从 DropDownList 中选择的项目将最小值和最大值设置为 TextBox?
- javascript - 错误:在 aurelia 中找不到模块“gulp”
- c - 将结构数组设置为空白/空,而不是在 C 中显示 0