【发布时间】:2018-12-08 21:58:13
【问题描述】:
有人可以帮助我吗?每当我单击 dialoginterface.onclicklistener 按钮时,应用程序就会崩溃,任何人都可以检查我的代码。另外,当我想要相同的对话框界面按钮从数据库中检索插入的数据以被视为列表视图时,我将提供数据库和页面代码
public class mainscreen extends AppCompatActivity {
private static final String TAG = "ListDataActivity";
ImageButton add;
DatabaseHelper db;
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mainscreen);
listView = (ListView)findViewById(R.id.listview);
add = (ImageButton) findViewById(R.id.addbtn);
//populateListView();
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog.Builder builder = new AlertDialog.Builder(mainscreen.this);
View mView = getLayoutInflater().inflate(R.layout.promptexercise,null);
final EditText addexerText = (EditText)mView.findViewById(R.id.editText2);
Button cancel = (Button) mView.findViewById(R.id.button4);
Button ok = (Button) mView.findViewById(R.id.button3);
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String newEntry = addexerText.getText().toString();
if (addexerText.length() != 0) {
AddExerData(newEntry);
addexerText.setText("");
}else{
toastMessage("You must enter an exercise name in the field!");
}
Toast.makeText(mainscreen.this, newEntry, Toast.LENGTH_SHORT).show();
}
});
builder.setView(mView);
AlertDialog dialog = builder.create();
dialog.show();
dialog.create();
}
});
}
//----- method to add data into database
public void AddExerData(String newEntry){
boolean insertData = db.addexerData(newEntry);
if(insertData){
toastMessage("Data Successfully Inserted");
}else{
toastMessage("Something went wrong");
}
}
// private void populateListView(){
// Log.d(TAG,"populateListView:Displaying data in the ListView");
//get the data and append to a list
// Cursor data = db.getData();
// //ArrayList<String>listData = new ArrayList<>();
// while(data.moveToNext()){
//get the value from the database from col 1 -id
//then add it into arraylist
// listData.add(data.getString(1));
// }
// ListAdapter adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,listData);
// listView.setAdapter(adapter);
// }
//method to make the msg pop
private void toastMessage(String message){
Toast.makeText(this,message,Toast.LENGTH_SHORT).show();
}
}
LOGCAT
Process: com.example.hibatulhadi.trackerapp2, PID: 643
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.example.hibatulhadi.trackerapp2.DatabaseHelper.addexerData(java.lang.String)' on a null object reference
at com.example.hibatulhadi.trackerapp2.mainscreen.AddExerData(mainscreen.java:79)
at com.example.hibatulhadi.trackerapp2.mainscreen$1$1.onClick(mainscreen.java:50)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
【问题讨论】:
-
请张贴logcat!是的,我可以在导致崩溃的代码中看到错误!但也可能还有一个原因!所以请提供你的错误的logcat
-
你在堆栈跟踪中遇到什么错误..
-
最终 EditText e1 = (EditText) promptView.findViewById(R.id.editText);您需要如上所述更改您的edittext初始化
-
@rizwanatta 我安装了 logcat 并尝试了你的建议。该应用程序仍然崩溃。有什么帮助吗?
-
@LonelyBat 检查答案编辑!我编辑了有帮助的答案!你没有初始化数据库!看到答案并关注它
标签: java android sqlite android-studio sqliteopenhelper