[英]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.