首页 > 解决方案 > 为什么我的工具栏中的帮助按钮不起作用

问题描述

当我单击帮助时,应用程序突然没有响应。我在应用程序中添加了一些工具栏,关于工作正常,但它带有应用程序突然停止的帮助按钮。

这是我的代码 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>

我应该怎么办?请帮帮我。谢谢

这是帮助按钮

标签: javaandroidandroid-studioandroid-layoutandroid-toolbar

解决方案


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 即可将活动称为包上下文。

查看文档以获取更多信息。


推荐阅读