【问题标题】: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
            }
        }));


    }

}

谢谢

【问题讨论】:

  • 你为什么写v.setText("aaa");
  • 简单测试!!!

标签: android android-studio onclicklistener settext


【解决方案1】:

您收到错误是因为setText() 方法在View 中不可用

而您试图在 onClick () 方法中访问 View.setText("aaa");

在您的代码中进行以下更改

  1. onCreate() 方法中执行findViewById()
  2. 重命名您的 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
                 }
              });
      
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-29
        • 1970-01-01
        • 2023-03-30
        • 2023-03-23
        • 2018-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多