在Android Studio中单击按钮时崩溃活动

时间:2018-06-29 05:40:51

标签: android

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

我有两个活动,并且能够通过按钮单击事件(意图)成功进入第二个活动,但是,一旦在第二个活动中单击一个按钮,该活动就会崩溃并返回到主要活动。 / p>

这是我的代码:

 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>

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

LOgcat

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

2 个答案:

答案 0 :(得分:0)

尝试

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


                }
            }
    );

答案 1 :(得分:0)

您的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方法的范围内。相反,您必须确保在类范围内声明类型。