Andorid.button.OnClickListener中的NullPointer

时间:2016-03-18 04:43:17

标签: java android

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

2 个答案:

答案 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。