Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么单击选项菜单项不';不行?_Java_Android_Menu_Onclicklistener_Optionmenu - Fatal编程技术网

Java 为什么单击选项菜单项不';不行?

Java 为什么单击选项菜单项不';不行?,java,android,menu,onclicklistener,optionmenu,Java,Android,Menu,Onclicklistener,Optionmenu,在选项菜单中单击某个项目时出现问题。我读过如何在网站上创建菜单,我似乎做得不错,但它仍然不起作用。菜单存在,它是可见的,但在我执行单击时没有发生任何事情。此外,Logcat中没有错误 菜单的XML文件为: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.andr

在选项菜单中单击某个项目时出现问题。我读过如何在网站上创建菜单,我似乎做得不错,但它仍然不起作用。菜单存在,它是可见的,但在我执行单击时没有发生任何事情。此外,Logcat中没有错误

菜单的XML文件为:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item android:title="@string/edit"
        android:id="@+id/edit_menu_script_item"
        app:showAsAction="always"
        android:icon="@drawable/ic_edit"/>
    <item android:title="@string/delete"
        android:id="@+id/delete_menu_script_item"
        app:showAsAction="never"/>
    <item android:title="@string/share"
        android:id="@+id/share_menu_script_item"
        app:showAsAction="never"/>
    <item android:title="@string/scenes"
        android:id="@+id/scenes_menu_script_item"
        app:showAsAction="never"/>
    <item android:title="@string/characters"
        android:id="@+id/characters_menu_script_item"
        app:showAsAction="never"/>

</menu>
我不使用ActionBar,而是使用我创建的另一个工具栏,我为整个应用程序设置了一个带有NoActionBar的样式<代码>

提前谢谢

试试这段代码

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
        switch(item.getItemId()){ 
            case R.id.delete_menu_script_item: 
                Toast.makeText(this, "Deleting script...", Toast.LENGTH_SHORT).show();
                break; 
            case R.id.characters_menu_script_item:
                Toast.makeText(this, "Opening characters list...", Toast.LENGTH_SHORT).show();
                break; 
        } 
        return super.onOptionsItemSelected(item); 
    }

尝试在初始化方法中添加此行:

setSupportActionBar()

那么,您需要设置支持操作栏setSupportActionBar();并传递工具栏变量,如下所示:


设置支持操作栏(工具栏)

我不太确定我是否正确地理解了你的描述。你的菜单有什么功能吗?有任何视觉反馈吗?菜单是关闭的,还是在点击后保持打开状态?我的项目都不起作用,点击项目时屏幕上也不会出现祝酒词。执行单击后,菜单将关闭。好吧,这真的很奇怪,我想我们需要一个菜单,但在深入讨论之前,让我确定我们正在谈论的是什么,是吗?我刚刚在问题主体中添加了两个带有视觉效果的示例。这确实是你通过链接建议的菜单类型。是的,这就是问题所在,我不敢相信!非常感谢你!谢谢,但不幸的是,它没有解决问题。@Cristina我创建了一个新项目并添加了您的代码。它工作得很好,没有任何问题。如果仍然不起作用,请添加完整的活动代码,以便我可以提供帮助。我已经用完整的代码以及XML文件更新了问题。我不明白为什么它不为我工作,如果它为你工作的话。
package com.stud.scriptreality;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.stud.scriptreality.classes.Screenwriter;
import com.stud.scriptreality.classes.Script;

public class ViewProjectSW extends AppCompatActivity {

    Toolbar toolbar;
    TextView scriptTV;
    Intent intent;
    String title;
    Script script;
    Screenwriter screenwriter = new Screenwriter();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_project_sw);

        initialization();

    }

    public void initialization(){
        intent=getIntent();
        title=intent.getStringExtra("title");
        int id= intent.getIntExtra("position",0);
        screenwriter = intent.getParcelableExtra("autor");

        toolbar=findViewById(R.id.toolbarViewProjectSW);
        toolbar.setTitle(title);
        script = new Script(id,screenwriter,title);

        scriptTV=findViewById(R.id.scriptTV);
        scriptTV.setClickable(false);
        Toast.makeText(this, R.menu.menu_script+"*", Toast.LENGTH_SHORT).show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_script, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        Toast.makeText(this, item.getItemId(), Toast.LENGTH_SHORT).show();

        switch (item.getItemId()){
            case R.id.edit_menu_script_item:
                Toast.makeText(this, "Opening edit page...", Toast.LENGTH_SHORT).show();
                Intent it = new Intent(getApplicationContext(),EditScript.class);
                it.putExtra("script",script);
                startActivity(it);
                break;
            case R.id.characters_menu_script_item:
                Toast.makeText(this, "Opening characters list...", Toast.LENGTH_SHORT).show();
                Intent it2 = new Intent(getApplicationContext(),ViewCharactersSW.class);
                startActivity(it2);
                break;
            case R.id.delete_menu_script_item:
                Toast.makeText(this, "Deleting script...", Toast.LENGTH_SHORT).show();
                break;
            case R.id.scenes_menu_script_item:
                Toast.makeText(this, "Opening scenes list...", Toast.LENGTH_SHORT).show();
                break;
            case R.id.share_menu_script_item:
                Toast.makeText(this, "Opening sharing dialog...", Toast.LENGTH_SHORT).show();
                break;
        }
        return true;
    }

}

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
        switch(item.getItemId()){ 
            case R.id.delete_menu_script_item: 
                Toast.makeText(this, "Deleting script...", Toast.LENGTH_SHORT).show();
                break; 
            case R.id.characters_menu_script_item:
                Toast.makeText(this, "Opening characters list...", Toast.LENGTH_SHORT).show();
                break; 
        } 
        return super.onOptionsItemSelected(item); 
    }