为啥会报这个错误呢

nineHt 2017-01-15 08:19:11
package foreach.study.zpika.layoutinflater;

import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.text.method.TransformationMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
private Button button=null;
private CheckBox checkBox=null;
private EditText editText=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

this.button= (Button) findViewById(R.id.button);
this.checkBox= (CheckBox) findViewById(R.id.checkBox);
this.editText= (EditText) findViewById(R.id.edit_password);
this.button.setOnClickListener(new OnClickListenerImpr());
this.checkBox.setOnClickListener(new OnClickListenerI());
}
private class OnClickListenerI implements View.OnClickListener{

@Override
public void onClick(View v) {
if(checkBox.isChecked()){
MainActivity.this.editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}else{
MainActivity.this.editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
}
public class OnClickListenerImpr implements View.OnClickListener{

@Override
public void onClick(View v) {
LayoutInflater factory=LayoutInflater.from(MainActivity.this);
View myView=factory.inflate(R.layout.login,null);
Dialog dialog=new AlertDialog.Builder(MainActivity.this)
.setTitle("用户注册")
.setIcon(R.mipmap.ic_launcher)
.setPositiveButton("确定",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "可惜哎还没有连接数据库", Toast.LENGTH_SHORT).show();
}
})
.setView(myView)
.setNegativeButton("取消",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "hide this view", Toast.LENGTH_SHORT).show();
}
}).create();
dialog.show();
}
}
}
执行代码后报错

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.CheckBox.setOnClickListener
(android.view.View$OnClickListener)'
on a null object reference
at foreach.study.zpika.layoutinflater.MainActivity.onCreate(MainActivity.java:32)
第32行已标注
...全文
289 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
YXTS122 2017-01-30
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.error.MainActivity" >
    <TableRow>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/name"/>
        <EditText
            android:id="@+id/edit_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="@string/inputyourname"/>
    </TableRow>
    <TableRow>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/password"/>
        <EditText
            android:id="@+id/edit_password"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="@string/inputyourpassword"
            android:inputType="textPassword"/>
    </TableRow>
    <TableRow>
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    </TableRow>
</TableLayout>
  
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:text="@string/mingwen"/>
                     
    
</LinearLayout>
  
YXTS122 2017-01-30
  • 打赏
  • 举报
回复
package com.example.error;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
private Button button=null;
private CheckBox checkBox=null;
private EditText editText=null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.button= (Button) findViewById(R.id.button);
this.editText= (EditText) findViewById(R.id.edit_password);
this.button.setOnClickListener(new OnClickListenerImpr());

}

private class OnClickListenerI implements View.OnClickListener{

@Override
public void onClick(View v) {
if(checkBox.isChecked()){
MainActivity.this.editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}else{
MainActivity.this.editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
}

public class OnClickListenerImpr implements View.OnClickListener{

@Override
public void onClick(View v) {
LayoutInflater factory=LayoutInflater.from(MainActivity.this);
View myView=factory.inflate(R.layout.login,null);
checkBox= (CheckBox)myView.findViewById(R.id.checkBox);
Dialog dialog=new AlertDialog.Builder(MainActivity.this)
.setTitle("用户注册")
.setIcon(R.drawable.abc_ab_transparent_dark_holo)
.setPositiveButton("确定",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "可惜哎还没有连接数据库", Toast.LENGTH_SHORT).show();
}
})
.setView(myView)
.setNegativeButton("取消",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "hide this view", Toast.LENGTH_SHORT).show();
}
}).create();
dialog.show();
checkBox.setOnClickListener(new OnClickListenerI());
}
}

@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);
}
}


nineHt 2017-01-18
  • 打赏
  • 举报
回复
是逻辑问题。 checkBox是从activity_main.xml中寻找的id 应该从login.xml(弹窗布局)中寻找
Roy_YeRuyi 2017-01-16
  • 打赏
  • 举报
回复
一般这样直接在activity中implement这些接口,然后所有的控件吧监听器都设成this即可,或者直接新建一个也行啊,楼主的方法着实让我很焦灼
头发还没秃a 2017-01-16
  • 打赏
  • 举报
回复

this.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ 
            @Override 
            public void onCheckedChanged(CompoundButton buttonView, 
                    boolean isChecked) { 
                // TODO Auto-generated method stub 
                if(isChecked){ 
                    editText1.setText(buttonView.getText()+"选中"); 
                }else{ 
                    editText1.setText(buttonView.getText()+"取消选中"); 
                } 
            } 
        }); 
nineHt 2017-01-16
  • 打赏
  • 举报
回复
非常感谢你,已发送
Jing丶無雙 2017-01-16
  • 打赏
  • 举报
回复
楼主是自己写了个小DEMO吧,能否把你这个项目发到我邮箱396282771@qq.com呢,给你看看
nineHt 2017-01-16
  • 打赏
  • 举报
回复
引用 5 楼 Roy_YeRuyi 的回复:
一般这样直接在activity中implement这些接口,然后所有的控件吧监听器都设成this即可,或者直接新建一个也行啊,楼主的方法着实让我很焦灼
我就是突然想试试, 在Dialog弹窗里写一个用户注册试一下
nineHt 2017-01-16
  • 打赏
  • 举报
回复
引用 6 楼 YXTS122 的回复:
什么错误啊!没看到。。。。。。。。。。
NullPointException 上面写了
nineHt 2017-01-16
  • 打赏
  • 举报
回复
引用 7 楼 xj396282771 的回复:
你的activity_main的XML布局里面,有申明了这个checkBox id么??
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TableRow> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="name"/> <EditText android:id="@+id/edit_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="input your name"/> </TableRow> <TableRow> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="password"/> <EditText android:id="@+id/edit_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="input your password" android:inputType="textPassword"/> </TableRow> <TableRow> <CheckBox android:id="@+id/checkBox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="false" android:text="明文显示"/> </TableRow> </TableLayout>
这个肯定有啊。。
Jing丶無雙 2017-01-16
  • 打赏
  • 举报
回复
你的activity_main的XML布局里面,有申明了这个checkBox id么??
YXTS122 2017-01-16
  • 打赏
  • 举报
回复
什么错误啊!没看到。。。。。。。。。。
nineHt 2017-01-15
  • 打赏
  • 举报
回复
引用 2 楼 u013290250 的回复:
  private Button button;
    private CheckBox checkBox;
    private EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button= (Button) findViewById(R.id.button);
        checkBox= (CheckBox) findViewById(R.id.checkBox);
        editText= (EditText) findViewById(R.id.edit_password);
        button.setOnClickListener(new OnClickListenerImpr());
        checkBox.setOnClickListener(new OnClickListenerI());
    }
去掉也没啥用 package foreach.study.zpika.layoutinflater; import android.app.Activity; import android.app.Dialog; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.os.Bundle; import android.text.method.HideReturnsTransformationMethod; import android.text.method.PasswordTransformationMethod; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private Button button; private CheckBox checkBox; //private Button checkBox; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button= (Button) findViewById(R.id.button); Log.i("1","test1"+button); editText= (EditText) findViewById(R.id.edit_password); Log.i("2","test2"+editText); button.setOnClickListener(new OnClickListenerImpr()); } class OnClickListenerImpr implements View.OnClickListener{ @Override public void onClick(View v) { checkBox= (CheckBox) findViewById(R.id.checkBox); LayoutInflater factory=LayoutInflater.from(MainActivity.this); View myView=factory.inflate(R.layout.login,null); Dialog dialog=new AlertDialog.Builder(MainActivity.this) .setTitle("用户注册") .setIcon(R.mipmap.ic_launcher) .setPositiveButton("确定",new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "可惜哎还没有连接数据库", Toast.LENGTH_SHORT).show(); } }) .setView(myView) .setNegativeButton("取消",new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "hide this view", Toast.LENGTH_SHORT).show(); } }).create(); dialog.show(); checkBox.setOnClickListener(new OnClickListenerI()); } class OnClickListenerI implements View.OnClickListener{ @Override public void onClick(View v) { if(checkBox.isChecked()){ MainActivity.this.editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); }else{ MainActivity.this.editText.setTransformationMethod(PasswordTransformationMethod.getInstance()); } } } } }
怀君 2017-01-15
  • 打赏
  • 举报
回复
  private Button button;
    private CheckBox checkBox;
    private EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button= (Button) findViewById(R.id.button);
        checkBox= (CheckBox) findViewById(R.id.checkBox);
        editText= (EditText) findViewById(R.id.edit_password);
        button.setOnClickListener(new OnClickListenerImpr());
        checkBox.setOnClickListener(new OnClickListenerI());
    }
nineHt 2017-01-15
  • 打赏
  • 举报
回复
Checkbox是空 but为啥是空啊!在线等 搞得我好焦灼的说

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧