大家好,我在android studio上开始了我的第一个应用程序,并且我在#34中得到了这个错误;无法解决符号' set.OnClickListener'"如下图所示 请我在谷歌进行了很多搜索来解决它,但没有找到。 所以请有人帮忙。 谢谢。
package com.example.omar.app1;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.view.View.OnClickListener;
import static android.view.View.OnClickListener;
public class Main extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{startActivity(new Intent(Main.this,Second.class)); }
});
}
答案 0 :(得分:1)
在结束onCreate()
之前,将所有与您的按钮相关的代码移至setContentView()
(}
之后)。
答案 1 :(得分:1)
我的例子是:
public class MainActivity extends Activity {
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(Main.this,Second.class));
}
});
}
}
我希望此文档可以帮助您Button Class和setOnClickListener
答案 2 :(得分:0)
与按钮相关的所有代码必须在行之后的onCreate()方法中:setContentView(R.layout.activity_main);
这些行:
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{startActivity(new Intent(Main.this,Second.class)); }
});
必须在setContentView(R.layout.activity_main)之后的onCreate方法中编写
答案 3 :(得分:0)
错误是按钮b =(按钮)findViewById(R.id.button1);
你声明你的按钮并在编译时用
初始化它Button b = (Button) findViewById(R.id.button1);
当然之前,你创建视图是不可能找到没有上下文的id。 您可以在设置内容后附加任何视图。
所以你可以改变
// compile time
Button b = (Button) findViewById(R.id.button1);
在此
Button b;
你可以改变你的onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// now you can attach the view
b = (Button) findViewById(R.id.button1);
}
在此之后,您可以像在下一行中那样设置匿名类型的单击侦听器,或者仍然可以在编译时声明侦听器并更改它:
b.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{startActivity(new Intent(Main.this,Second.class)); }
});
在此:
View.OnClickListener myClickListener = new View.OnClickListener()
{
public void onClick(View v)
{
startActivity(new Intent(Main.this,Second.class));
}
};
但现在您需要设置OnClickListener,因此onCreate将:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// now you can attach the view
b = (Button) findViewById(R.id.button1);
b.SetOnClickListener(myClickListener);
}
希望这有助于理解。