简体   繁体   English

无法在onOptionsItemSelected(MenuItem item)方法中解析Textview

[英]Textview not resolved inside onOptionsItemSelected(MenuItem item) method

Here is MainActivity.java 这是MainActivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView myTxt = findViewById(R.id.view);


       }



    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.test, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
            case R.id.toast:
                      myTxt.setText("what a yummy toast!");

                return true;
            case R.id.nutella:

                return true;

            case R.id.milk:


            default:
                return super.onOptionsItemSelected(item);// ken jét this .onOption infinite loop
        }

    }

}

Here is the menu XML file 这是菜单XML文件

<?xml version="1.0" encoding="utf-8"?>

<item android:title="@string/toast"
    android:id="@+id/toast"/>


<item android:title="@string/nutella"
    android:id="@+id/nutella"/>

<item android:title="@string/milk"
    android:id="@+id/milk"/>

I want to handle myTxt which is a textview whenever I choose an item from the menu option the problem is that myTxt is not recognized. 每当我从菜单选项中选择一个项目时,我都想处理myTxt,它是一个文本视图,问题是无法识别myTxt。 How Should I handle Menus correctly and what are Here is an image for more explanation 我应该如何正确处理菜单, 这是用于更多说明的图像

You need to declare your TextView myTxt as global outside onCreate() method 您需要在onCreate()方法之外将TextView myTxt声明为全局TextView myTxt

SAMPLE CODE 样本代码

public class MainActivity extends AppCompatActivity {

    TextView myTxt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         myTxt = findViewById(R.id.view);


       }



    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.test, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
            case R.id.toast:
                      myTxt.setText("what a yummy toast!");

                return true;
            case R.id.nutella:

                return true;

            case R.id.milk:


            default:
                return super.onOptionsItemSelected(item);// ken jét this .onOption infinite loop
        }

    }

}

myTxt is declared inside onCreate() so you can not access it from outside this function. myTxt在onCreate()中声明,因此您不能从此函数外部访问它。 Try declare it outside onCreate() 尝试在onCreate()外部声明它

public class MainActivity extends AppCompatActivity {
private TextView myTxt;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    myTxt = findViewById(R.id.view);


   }



public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.test, menu);
    return true;
}

public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.toast:
                  myTxt.setText("what a yummy toast!");

            return true;
        case R.id.nutella:

            return true;

        case R.id.milk:


        default:
            return super.onOptionsItemSelected(item);// ken jét this .onOption infinite loop
    }

}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 从不使用方法“ onOptionsItemSelected(MenuItem item,LayoutInflater inflater,ViewGroup container)” - Method “onOptionsItemSelected(MenuItem item,LayoutInflater inflater,ViewGroup container)” is never used onOptionsItemSelected(MenuItem item)奇怪的行为 - onOptionsItemSelected(MenuItem item) strange behavior onOptionsItemSelected(MenuItem item)不起作用 - onOptionsItemSelected(MenuItem item) does not work 不为项目app:actionProviderClass调用onOptionsItemSelected(item:MenuItem) - onOptionsItemSelected(item: MenuItem) not called for an item app:actionProviderClass onOptionsItemSelected(MenuItem item)打开错误的活动 - onOptionsItemSelected(MenuItem item) opens wrong activity 未为FragmentPagerAdapter类型定义方法onOptionsItemSelected(MenuItem) - The method onOptionsItemSelected(MenuItem) is undefined for the type FragmentPagerAdapter Android-MenuItem onOptionsItemSelected方法不起作用,但未返回任何错误 - Android - MenuItem onOptionsItemSelected method not working but returning no errors Android - 菜单项无法解析为onOptionsItemSelected()中的类型 - Android - Menu Item cannot be resolved to a type in onOptionsItemSelected() 我重写onOptionsItemSelected(MenuItem item)后不再触发onSupportNavigateUp() - onSupportNavigateUp() is not fired anymore after I override onOptionsItemSelected(MenuItem item) 使用onOptionsItemSelected(MenuItem item)将视图更改为其他选项卡 - Using onOptionsItemSelected(MenuItem item) to change view to a different Tab
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM