【问题标题】:setText is shown in red and i don't undrestand whysetText 显示为红色,我不明白为什么
【发布时间】:2020-08-05 19:33:27
【问题描述】:
setText 显示为红色,我不明白为什么
public class MainActivity extends AppCompatActivity {
TextView v = (TextView)findViewById(R.id.textInput);
Button b = (Button)findViewById(R.id.btn12);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b.setOnClickListener((new View.OnClickListener(){
@Override
public void onClick(View v) {
v.setText("aaa");// why setText not found
}
}));
}
}
谢谢
【问题讨论】:
标签:
android
android-studio
onclicklistener
settext
【解决方案1】:
您收到错误是因为setText() 方法在View 中不可用
而您试图在 onClick () 方法中访问 View.setText("aaa");
在您的代码中进行以下更改
- 在
onCreate() 方法中执行findViewById()
- 重命名您的
TextView 变量
试试这个
public class MainActivity extends AppCompatActivity {
TextView textView;
Button b ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.textInput);
b = (Button)findViewById(R.id.btn12)
b.setOnClickListener((new View.OnClickListener(){
@Override
public void onClick(View v) {
textView.setText("aaa");// why setText not found
}
}));
}
}
【解决方案2】:
setText 不是一种查看方法,您需要将其设为EditText,只要该视图始终是 EditText:
公共类 MainActivity 扩展 AppCompatActivity {
TextView v = (TextView)findViewById(R.id.textInput);
Button b = (Button)findViewById(R.id.btn12);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b.setOnClickListener((new View.OnClickListener(){
@Override
public void onClick(View v) {
((EditText)v).setText("aaa");// why setText not found
}
}));
}
}
【解决方案3】:
移动这些方法:
TextView v = (TextView)findViewById(R.id.textInput);
Button b = (Button)findViewById(R.id.btn12);
你可以使用:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView v = (TextView)findViewById(R.id.textInput);
Button b = (Button)findViewById(R.id.btn12);
b.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
v.setText("aaa");// why setText not found
}
});
或者你可以使用:
public class MainActivity extends AppCompatActivity {
private TextView v;
private Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
v = (TextView)findViewById(R.id.textInput);
b = (Button)findViewById(R.id.btn12);
b.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
v.setText("aaa");// why setText not found
}
});
}
}