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 方法中不可用
我是 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 方法中不可用