为什么我的工具栏中的帮助按钮不起作用
Why does the help button in my toolbar is not working
当我单击“帮助”时,应用程序突然没有响应。
我在应用程序中添加了一些工具栏,关于它工作正常,但它出现了应用程序突然停止的帮助按钮。
这是我的主要活动代码
@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>
我该怎么办?请帮帮我。谢谢
This is the help button
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
指的是菜单帮助项,而不是 activity。由于 Intent 的第一个参数是 packageContext,因此 this
将不起作用。
解决方案
只需将您的 Intent 中的 this
更改为 MainActivity.this 以将 activity 称为包上下文。
查看 docs 了解更多信息。
当我单击“帮助”时,应用程序突然没有响应。 我在应用程序中添加了一些工具栏,关于它工作正常,但它出现了应用程序突然停止的帮助按钮。
这是我的主要活动代码
@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>
我该怎么办?请帮帮我。谢谢
This is the help button
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
指的是菜单帮助项,而不是 activity。由于 Intent 的第一个参数是 packageContext,因此 this
将不起作用。
解决方案
只需将您的 Intent 中的 this
更改为 MainActivity.this 以将 activity 称为包上下文。
查看 docs 了解更多信息。