android - 在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();
}
解决方案
您的 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 方法的范围内。相反,您必须确保在类范围内声明类型。
推荐阅读
- nuxt.js - Nuxt js 身份验证不适用于@nuxt/proxy
- php - 无法断言两个数组相同
- kubernetes - 将 Google Cloud 中的外部 IP 与 Kubernetes 服务一起使用以将其公开到互联网
- java - 有没有办法防止 Spring 中的配置依赖注入?
- node.js - 是否可以在 Nginx njs eniroment 中使用 libsquoosh(img 处理节点库)
- javascript - 正则表达式以获得最佳匹配
- r - 在ggplotly中使用facet_wrap时如何使面板名称适合一行?
- javascript - MongoDB 根据自定义 ID 更新/删除多个文档
- mongodb - 计算远程服务器上的 MongoDB 日志错误
- json - Power Query 显示 json 值