view.onclicklistener无法实施

view.onclicklistener cannot be implemented

我是 android studio 的新手,我试着做了一个测试,比如按下两个不同的按钮在 Textview 中显示不同的文本。 我的 .java 代码是

 import android.os.Bundle;
 import android.support.design.widget.FloatingActionButton;
 import android.support.design.widget.Snackbar;
 import android.support.v7.app.AppCompatActivity;
 import android.support.v7.widget.Toolbar;
 import android.view.View;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.widget.TextView;
 import android.view.View.OnClickListener;
  public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView t1;
        t1 = (TextView) findViewById(R.id.editText);

        t1.setOnClickListener(this);
    }
   @Override
    public void onClick (View v) {
       if (v.getId() == R.id.button)
           t1.setText("Customer1");
       if (v.getId() == R.id.button2)
           t1.setText("Custom2");
       }
   }

无法在

中解析符号 't1'
 t1.setText("Customer1");

 import android.view.View.OnClickListener;

显示未使用的导入语句。 我想知道代码哪一部分有问题,如何修复。

感谢

您已经编写了onClickLister方法,但是您还没有实现该接口。

尝试改变这个

 public class MainActivity extends AppCompatActivity

为此

 public class MainActivity extends AppCompatActivity implements View.OnClickListener

并在 class 中实施 onClick(View v) 方法代替您的 onClickListener

关于t1问题。您收到错误的原因是因为您将 t1 声明为局部变量。移动 t1 使其成为一个全局变量,这应该可以解决问题。像这样

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

public TextView t1;

@Override
protected void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    t1 = (TextView) findViewById(R.id.editText);
    t1.setOnClickListener(this);
}

@Override
public void onClick (View v) {
   if (v.getId() == R.id.button)
       t1.setText("Customer1");
   if (v.getId() == R.id.button2)
       t1.setText("Custom2");
   }

}

实现 OnClickListener

public class MainActivity extends AppCompatActivity implements View.OnClickListener

将侦听器设置为您的视图t1.setOnClickListener(this);

并将您的代码添加到 onClick()

 @Override
public void onClick(View v) {
    if (v.getId() == R.id.button)
        t1.setText("Customer1");
    if (v.getId() == R.id.button2)
        t1.setText("Custom2");
}

使用其中一种方法。

实现接口

public class MainActivity extends AppCompatActivity implements{

    TextView t1;

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

        t1 = (TextView) findViewById(R.id.editText);

        t1.setOnClickListener(this);
    }

    //its onClick -> Not OnClickListener
    @Override
    public void onClick(View v) {
        switch(v.getId()){
                    case R.id.button:
                        t1.setText("Customer1");
                        break;
                    case R.id.button2:
                        t1.setText("Custom2");
                        break;
                }
    }
}

或创建一个 View.OnClickListener 对象

public class MainActivity extends AppCompatActivity {

    TextView t1;

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

        t1 = (TextView) findViewById(R.id.editText);

        View.OnClickListener onclickListnere = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch(v.getId()){
                    case R.id.button:
                        t1.setText("Customer1");
                        break;
                    case R.id.button2:
                        t1.setText("Custom2");
                        break;
                }
            }
        };

        t1.setOnClickListener(onclickListnere);
    }
}

更新:

将 TextView t1 声明为 class 成员变量。您将其声明为局部变量,因此在 onClick 方法中不可用