[英]setOnClickListener error - cannot resolve symbol
我想创建一个按钮,单击该按钮时会显示另一个意图。
这是代码:
<Button
android:text="Bine ati venit!"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/button1"
android:background="#479fc7"
android:textSize="40dp"
android:textColor="@color/colorPrimaryDark"
android:textStyle="normal|bold|italic"
android:textAllCaps="false"
android:fontFamily="casual"
android:onClick="next_page"/>
从 .java 类:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
}
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener( new View.OnClickListener()
{
public void onClick (View v){
next_page(v);
}
});
public void next_page(View v) {
Intent intent = new Intent(this, MapsActivity.class);
startActivity(intent);
}
我收到错误消息:“无法解析符号‘setOnClickListener’”、“从未使用过变量 onClick”、“; 预期”....
您应该将该特定片段放在OnCreate()
。 那为我解决了这个问题。
// 您必须将您键入的代码移动到类方法中并按如下方式工作
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Find the View that shows the numbers category
TextView numbers = (TextView) findViewById(R.id.numbers);
// Set a click listener on that View
numbers.setOnClickListener(new View.OnClickListener() {
// The code in this method will be executed when the numbers View is clicked on.
@Override
public void onClick(View view) {
Intent numbersIntent = new Intent(MainActivity.this, NumberActivity.class);
startActivity(numbersIntent);
}
});
}
您需要像这样更改代码
Button button;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener( new View.OnClickListener(){
public void onClick (View v){
next_page(v);
}
});
}
public void next_page(View v) {
Intent intent = new Intent(this, MapsActivity.class);
startActivity(intent);
}
如果您不在那里使用它,则不需要将 View 对象传递给next_page()
您可以在 xml 中使用方法名称声明 onClick 属性,或者在 onCreate 方法中以编程方式设置它。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener( new View.OnClickListener()
{
public void onClick (View v){
next_page(v);
}
});
}
public void next_page(View v) {
Intent intent = new Intent(this, MapsActivity.class);
startActivity(intent);
}
您应该声明按钮变量并在oncreate()函数下编写Setonclicklistner()函数。否则它将无法正常工作。
关于错误:“无法解析符号'setOnClickListener'”可能值得确保您通过添加导入了TextView
import android.widget.TextView;
到文件的顶部。
您只需要更改代码的位置。
@Override
protected void onCreate(Bundle savedInstanceState) {
...
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener( new View.OnClickListener(){
public void onClick (View v){
next_page(v);
}
});
}
剪切代码并将其粘贴到 OnCreate 方法中。 因为在按钮创建后设置OnClickListener没有意义。 这就是错误发生的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.