我是Android的新手,我正在尝试通过一些教程来学习Android。当我尝试使用button开始时,这是logcat中的错误。我认为问题是方法findViewById找不到这两个按钮。我该如何解决呢? 错误:
03-18 00:57:46.964: E/AndroidRuntime(1066): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.cs656/com.example.cs656.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
这是活动
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.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button log_in;
private Button register;
private Button.OnClickListener Button_Listener = new Button.OnClickListener(){
public void onClick(View v){
setTitle("kkkkkkkkkkkk");
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
log_in = (Button) findViewById(android.R.id.button1);
log_in.setOnClickListener(Button_Listener);
register = (Button) findViewById(android.R.id.button2);
}
}
XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:baselineAligned="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id ="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Register" />
<Button android:id ="@+id/log_in"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Log In" />
</LinearLayout>
答案 0 :(得分:2)
更改此行
log_in = (Button) findViewById(android.R.id.button1);
register = (Button) findViewById(android.R.id.button2);
到
log_in = (Button) findViewById(R.id.log_in);
register = (Button) findViewById(R.id.register);
你的id在xml和java文件中不匹配。
答案 1 :(得分:1)
替换
log_in = (Button) findViewById(android.R.id.button1);
register = (Button) findViewById(android.R.id.button2);
到
log_in = (Button) findViewById(R.id.log_in);
register = (Button) findViewById(R.id.register);
android.R.id.button1
尝试在android默认xmls中搜索,而不是在您创建的xml中搜索。
另外,使用与xml中声明的相同的id。