首页 > 解决方案 > 在Android Studio中单击按钮时活动崩溃

问题描述

需要一些关于android的帮助。我是android开发的新手,所以请多多包涵。

我有两个活动,我可以通过按钮单击事件(意图)成功进入第二个活动,但是一旦我单击第二个活动中的按钮,活动就会崩溃并返回到主要活动。

这是我的代码:

 public  boolean insertEmployee(String name, int pin, int roleid)
    {
        mydb= getWritableDatabase();
        ContentValues contentvalue= new ContentValues();`enter code here`
        contentvalue.put(emp_name, name);
        contentvalue.put(emp_Pin,pin);
        contentvalue.put(emp_roleID,roleid);
        long result=mydb.insert(emp,null,contentvalue);
        if(result==-1)
            return  false;
        else
            return  true;


    }

在我的 secondactivity.java 上

public void insertEmployee()
    {
        btnemployee.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        boolean isSuccess = dbhelp.insertEmployee(name.getText().toString(), Integer.parseInt(pin.getText().toString()), Integer.parseInt(roleid.getText().toString()));


                    }
                }
        );
    }

和 manifest.xml

<activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".MainActivity2Activity"
            android:label="@string/app_name" >

        </activity>

只是似乎无法理解,但如果我只有一项活动,则插入方法有效。请帮忙。多谢你们

日志猫

  06-29 16:07:29.125  15133-15133/
 E/AndroidRuntime﹕ FATAL EXCEPTION: main
        Process: "I REMOVED APP NAME", PID: 15133
        java.lang.NullPointerException
                at 
.MainActivity2Activity$1.onClick(MainActivity2Activity.java:45)
                at android.view.View.performClick(View.java:4438)
                at android.view.View$PerformClick.run(View.java:18439)
                at android.os.Handler.handleCallback(Handler.java:733)
                at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.Looper.loop(Looper.java:136)
                at android.app.ActivityThread.main(ActivityThread.java:5095)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:515)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
                at dalvik.system.NativeStart.main(Native Method)

XML

 <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Insert Employee"
        android:id="@+id/binsertEmployee"
        android:layout_below="@+id/bRoleinsert"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignRight="@+id/bRoleinsert"
        android:layout_alignEnd="@+id/bRoleinsert" />

mainactivity2.java

public class MainActivity2Activity extends AppCompatActivity {
    DatabaseHelper dbhelp;
    Button btnemployee, btnrole;
    EditText role,name,pin,roleid;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_activity2);
        btnrole=(Button)findViewById(R.id.bRoleinsert);
        btnemployee=(Button)findViewById(R.id.binsertEmployee);
        role=(EditText)findViewById(R.id.editText2);
        name=(EditText)findViewById(R.id.editText3);
        pin=(EditText)findViewById(R.id.editText4);
        roleid=(EditText)findViewById(R.id.editText5);

        InsertRole();
        insertEmployee();
    }

标签: android

解决方案


您的 btnemployee 出现 NullPointerException 错误,这意味着该按钮从未被初始化。您可能已经使用 将其设为全局变量Button btnemployee,但您可能实际上并未将其分配给 XML 文件中的按钮。例如,假设您在 XML 中的按钮的 id 为 btnEmployee,您需要在您的onCreate(Bundle savedInstanceState)方法中像这样分配它:

btnemployee = findViewById(R.id.btnEmployee)

确保布局中的按钮已分配 id,例如:

android:id="@+id/btnEmployee"

这样,该资源将以R.id.btnEmployee.

虽然您必须确保在 onCreate 方法中分配值,但您不能在那里声明变量,否则它将仅在 onCreate 方法的范围内。相反,您必须确保在类范围内声明类型。


推荐阅读