view.onclicklistener无法实现

时间:2016-03-21 09:46:53

标签: android debugging button onclicklistener

我是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;

显示未使用的import语句。 我想知道代码的哪个部分是错的,以及如何解决它。

THX

3 个答案:

答案 0 :(得分:2)

您已编写了onClickLister方法,但尚未实现该接口。

尝试更改此

 public class MainActivity extends AppCompatActivity

到此

 public class MainActivity extends AppCompatActivity implements View.OnClickListener

在班级中实施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");
   }

}

答案 1 :(得分:1)

实施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");
}

答案 2 :(得分:0)

使用任何一种方法。

实现界面

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声明为类成员变量。您将其声明为局部变量,因此在onClick方法

中不可用