为什么我的工具栏中的帮助按钮不起作用

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 了解更多信息。