这是我的MainActivity。
public class MainActivity extends ActionBarActivity {
public Button ok;
public EditText name, password;
public ListView listView;
BaseAdapter baseAdapter;
ArrayList<item> arrayList;
View view;
DataBaseHelper dBaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
setContentView(R.layout.activity_main);
InitializedAll();
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
save(view);
show(view);
}
});
}
private void InitializedAll() {
name = (EditText) findViewById(R.id.nameeditText);
password = (EditText) findViewById(R.id.passwordeditText);
ok = (Button) findViewById(R.id.okbutton);
listView = (ListView) findViewById(R.id.listView);
arrayList = new ArrayList<item>();
baseAdapter = new BaseAdapter() {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@Override
public View getView(int position, View view, ViewGroup arg2) {
if (view == null) {
view = inflater.inflate(R.layout.item_list, null);
}
TextView name = (TextView) view.findViewById(R.id.nametextView);
TextView pass = (TextView) view
.findViewById(R.id.passwordtextView);
name.setText(arrayList.get(position).getName());
pass.setText(arrayList.get(position).getPassword());
return view;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return arrayList.get(position);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return arrayList.size();
}
};
listView.setAdapter(baseAdapter);
}
public void save(View view) {
String na = name.getText().toString();
String pas = password.getText().toString();
item listItem = new item(na, pas);
arrayList.add(listItem);
long inserted = dBaseHelper.insertItem(listItem);
if (inserted >= 0) {
Toast.makeText(getApplicationContext(), "Data Inserted",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Data not Inserted",
Toast.LENGTH_SHORT).show();
}
baseAdapter.notifyDataSetChanged();
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager
.hideSoftInputFromWindow(password.getWindowToken(), 0);
Toast.makeText(getBaseContext(), "New Wish Added To List",
Toast.LENGTH_SHORT).show();
show(view);
}
public void show(View view) {
ArrayList<item> items = dBaseHelper.getAllDate();
if (items != null && items.size() > 0) {
baseAdapter.notifyDataSetChanged();
}
}
}
这是我的Logcat错误。
09-28 14:16:42.460: E/AndroidRuntime(15748): FATAL EXCEPTION: main
09-28 14:16:42.460: E/AndroidRuntime(15748): java.lang.NullPointerException
09-28 14:16:42.460: E/AndroidRuntime(15748): at com.example.text.MainActivity.show(MainActivity.java:131)
09-28 14:16:42.460: E/AndroidRuntime(15748): at com.example.text.MainActivity.save(MainActivity.java:127)
09-28 14:16:42.460: E/AndroidRuntime(15748): at com.example.text.MainActivity$1.onClick(MainActivity.java:44)
09-28 14:16:42.460: E/AndroidRuntime(15748): at android.view.View.performClick(View.java:4102)
09-28 14:16:42.460: E/AndroidRuntime(15748): at android.view.View$PerformClick.run(View.java:17085)
09-28 14:16:42.460: E/AndroidRuntime(15748): at android.os.Handler.handleCallback(Handler.java:615)
09-28 14:16:42.460: E/AndroidRuntime(15748): at android.os.Handler.dispatchMessage(Handler.java:92)
09-28 14:16:42.460: E/AndroidRuntime(15748): at android.os.Looper.loop(Looper.java:155)
09-28 14:16:42.460: E/AndroidRuntime(15748): at android.app.ActivityThread.main(ActivityThread.java:5511)
09-28 14:16:42.460: E/AndroidRuntime(15748): at java.lang.reflect.Method.invokeNative(Native Method)
09-28 14:16:42.460: E/AndroidRuntime(15748): at java.lang.reflect.Method.invoke(Method.java:511)
09-28 14:16:42.460: E/AndroidRuntime(15748): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
09-28 14:16:42.460: E/AndroidRuntime(15748): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
09-28 14:16:42.460: E/AndroidRuntime(15748): at dalvik.system.NativeStart.main(Native Method)
09-28 14:16:42.470: E/EmbeddedLogger(426): App crashed! Process: com.example.text
09-28 14:16:42.470: E/EmbeddedLogger(426): App crashed! Package: com.example.text v1 (1.0)
09-28 14:16:42.470: E/EmbeddedLogger(426): Application Label: Text
09-28 14:16:44.822: E/HtcModeClient(15009): Check connection and retry 12 times.
我想显示我的数据在我的listView中,但是当我运行这个应用程序时,它被迫停止。 然后我看到我的logcat错误,但我找不到nullpointexception。 如何解决它。
答案 0 :(得分:0)
dBaseHelper
对象为null
,因为在从getAllDate()
类调用DataBaseHelper
方法之前,您没有初始化它。在onCreate of Acivity中初始化它。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initialize dBaseHelper here
//...your code
}
答案 1 :(得分:0)
您正在声明变量dBaseHelper;
DataBaseHelper dBaseHelper;
...但你永远不会把它设置成任何东西。当你到达那条线时;
ArrayList<item> items = dBaseHelper.getAllDate();
... dBaseHelper为null并导致程序崩溃。
答案 2 :(得分:0)
您必须初始化DataBaseHelper类。所以把这个,myDbHelper = new DataBaseHelper(this);在onCreate方法中,就像这样。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
setContentView(R.layout.activity_main);
myDbHelper = new DataBaseHelper(this);
InitializedAll(); .....}