Android 删除时出现空指针异常\u btn
我在delete_btn收到一个空指针异常。我在下面的代码中提到了错误行,并且我被发布了相关的代码 Stacktrace:Android 删除时出现空指针异常\u btn,android,nullpointerexception,android-runtime,Android,Nullpointerexception,Android Runtime,我在delete_btn收到一个空指针异常。我在下面的代码中提到了错误行,并且我被发布了相关的代码 Stacktrace: 12-22 10:03:59.897: E/AndroidRuntime(1505): FATAL EXCEPTION: main 12-22 10:03:59.897: E/AndroidRuntime(1505): Process: com.example.sqlitedemoo, PID: 1505 12-22 10:03:59.897: E/AndroidRunti
12-22 10:03:59.897: E/AndroidRuntime(1505): FATAL EXCEPTION: main
12-22 10:03:59.897: E/AndroidRuntime(1505): Process: com.example.sqlitedemoo, PID: 1505
12-22 10:03:59.897: E/AndroidRuntime(1505): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sqlitedemoo/com.pavan.sqlitedemoo.MainActivity}: java.lang.NullPointerException
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.access$800(ActivityThread.java:135)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.os.Handler.dispatchMessage(Handler.java:102)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.os.Looper.loop(Looper.java:136)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.main(ActivityThread.java:5017)
12-22 10:03:59.897: E/AndroidRuntime(1505): at java.lang.reflect.Method.invokeNative(Native Method)
12-22 10:03:59.897: E/AndroidRuntime(1505): at java.lang.reflect.Method.invoke(Method.java:515)
12-22 10:03:59.897: E/AndroidRuntime(1505): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-22 10:03:59.897: E/AndroidRuntime(1505): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-22 10:03:59.897: E/AndroidRuntime(1505): at dalvik.system.NativeStart.main(Native Method)
12-22 10:03:59.897: E/AndroidRuntime(1505): Caused by: java.lang.NullPointerException
12-22 10:03:59.897: E/AndroidRuntime(1505): at com.pavan.sqlitedemoo.MainActivity.onCreate(MainActivity.java:50)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.Activity.performCreate(Activity.java:5231)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
12-22 10:03:59.897: E/AndroidRuntime(1505): ... 11 more
public class MainActivity extends Activity {
ListView lv;
SQLController dbcon;
TextView memID_tv, memName_tv;
Button delete_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbcon = new SQLController(this);
dbcon.open();
lv = (ListView) findViewById(R.id.memberList_id);
delete_btn = (Button) findViewById(R.id.delete_btn);
// Attach The Data From DataBase Into ListView Using Crusor Adapter
Cursor cursor = dbcon.readData();
String[] from = new String[] { DBhelper.MEMBER_ID, DBhelper.MEMBER_NAME };
int[] to = new int[] { R.id.member_id, R.id.member_name };
@SuppressWarnings("deprecation")
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
MainActivity.this, R.layout.view_member_entry, cursor, from, to);
adapter.notifyDataSetChanged();
lv.setAdapter(adapter);
delete_btn.setOnClickListener(new OnClickListener() { --> 50th Line- Null pointer Exception
@Override
public void onClick(View v) {
memID_tv = (TextView) v.findViewById(R.id.member_id);
memName_tv = (TextView) v.findViewById(R.id.member_name);
String memberID_val = memID_tv.getText().toString();
String memberName_val = memName_tv.getText().toString();
Intent modify_intent = new Intent(getApplicationContext(),
Modify_member.class);
modify_intent.putExtra("memberName", memberName_val);
modify_intent.putExtra("memberID", memberID_val);
startActivity(modify_intent);
}
});
}
MainActivity.java:
12-22 10:03:59.897: E/AndroidRuntime(1505): FATAL EXCEPTION: main
12-22 10:03:59.897: E/AndroidRuntime(1505): Process: com.example.sqlitedemoo, PID: 1505
12-22 10:03:59.897: E/AndroidRuntime(1505): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sqlitedemoo/com.pavan.sqlitedemoo.MainActivity}: java.lang.NullPointerException
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.access$800(ActivityThread.java:135)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.os.Handler.dispatchMessage(Handler.java:102)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.os.Looper.loop(Looper.java:136)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.main(ActivityThread.java:5017)
12-22 10:03:59.897: E/AndroidRuntime(1505): at java.lang.reflect.Method.invokeNative(Native Method)
12-22 10:03:59.897: E/AndroidRuntime(1505): at java.lang.reflect.Method.invoke(Method.java:515)
12-22 10:03:59.897: E/AndroidRuntime(1505): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-22 10:03:59.897: E/AndroidRuntime(1505): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-22 10:03:59.897: E/AndroidRuntime(1505): at dalvik.system.NativeStart.main(Native Method)
12-22 10:03:59.897: E/AndroidRuntime(1505): Caused by: java.lang.NullPointerException
12-22 10:03:59.897: E/AndroidRuntime(1505): at com.pavan.sqlitedemoo.MainActivity.onCreate(MainActivity.java:50)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.Activity.performCreate(Activity.java:5231)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
12-22 10:03:59.897: E/AndroidRuntime(1505): ... 11 more
public class MainActivity extends Activity {
ListView lv;
SQLController dbcon;
TextView memID_tv, memName_tv;
Button delete_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbcon = new SQLController(this);
dbcon.open();
lv = (ListView) findViewById(R.id.memberList_id);
delete_btn = (Button) findViewById(R.id.delete_btn);
// Attach The Data From DataBase Into ListView Using Crusor Adapter
Cursor cursor = dbcon.readData();
String[] from = new String[] { DBhelper.MEMBER_ID, DBhelper.MEMBER_NAME };
int[] to = new int[] { R.id.member_id, R.id.member_name };
@SuppressWarnings("deprecation")
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
MainActivity.this, R.layout.view_member_entry, cursor, from, to);
adapter.notifyDataSetChanged();
lv.setAdapter(adapter);
delete_btn.setOnClickListener(new OnClickListener() { --> 50th Line- Null pointer Exception
@Override
public void onClick(View v) {
memID_tv = (TextView) v.findViewById(R.id.member_id);
memName_tv = (TextView) v.findViewById(R.id.member_name);
String memberID_val = memID_tv.getText().toString();
String memberName_val = memName_tv.getText().toString();
Intent modify_intent = new Intent(getApplicationContext(),
Modify_member.class);
modify_intent.putExtra("memberName", memberName_val);
modify_intent.putExtra("memberID", memberID_val);
startActivity(modify_intent);
}
});
}
我需要什么:
12-22 10:03:59.897: E/AndroidRuntime(1505): FATAL EXCEPTION: main
12-22 10:03:59.897: E/AndroidRuntime(1505): Process: com.example.sqlitedemoo, PID: 1505
12-22 10:03:59.897: E/AndroidRuntime(1505): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sqlitedemoo/com.pavan.sqlitedemoo.MainActivity}: java.lang.NullPointerException
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.access$800(ActivityThread.java:135)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.os.Handler.dispatchMessage(Handler.java:102)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.os.Looper.loop(Looper.java:136)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.main(ActivityThread.java:5017)
12-22 10:03:59.897: E/AndroidRuntime(1505): at java.lang.reflect.Method.invokeNative(Native Method)
12-22 10:03:59.897: E/AndroidRuntime(1505): at java.lang.reflect.Method.invoke(Method.java:515)
12-22 10:03:59.897: E/AndroidRuntime(1505): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-22 10:03:59.897: E/AndroidRuntime(1505): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-22 10:03:59.897: E/AndroidRuntime(1505): at dalvik.system.NativeStart.main(Native Method)
12-22 10:03:59.897: E/AndroidRuntime(1505): Caused by: java.lang.NullPointerException
12-22 10:03:59.897: E/AndroidRuntime(1505): at com.pavan.sqlitedemoo.MainActivity.onCreate(MainActivity.java:50)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.Activity.performCreate(Activity.java:5231)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
12-22 10:03:59.897: E/AndroidRuntime(1505): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
12-22 10:03:59.897: E/AndroidRuntime(1505): ... 11 more
public class MainActivity extends Activity {
ListView lv;
SQLController dbcon;
TextView memID_tv, memName_tv;
Button delete_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbcon = new SQLController(this);
dbcon.open();
lv = (ListView) findViewById(R.id.memberList_id);
delete_btn = (Button) findViewById(R.id.delete_btn);
// Attach The Data From DataBase Into ListView Using Crusor Adapter
Cursor cursor = dbcon.readData();
String[] from = new String[] { DBhelper.MEMBER_ID, DBhelper.MEMBER_NAME };
int[] to = new int[] { R.id.member_id, R.id.member_name };
@SuppressWarnings("deprecation")
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
MainActivity.this, R.layout.view_member_entry, cursor, from, to);
adapter.notifyDataSetChanged();
lv.setAdapter(adapter);
delete_btn.setOnClickListener(new OnClickListener() { --> 50th Line- Null pointer Exception
@Override
public void onClick(View v) {
memID_tv = (TextView) v.findViewById(R.id.member_id);
memName_tv = (TextView) v.findViewById(R.id.member_name);
String memberID_val = memID_tv.getText().toString();
String memberName_val = memName_tv.getText().toString();
Intent modify_intent = new Intent(getApplicationContext(),
Modify_member.class);
modify_intent.putExtra("memberName", memberName_val);
modify_intent.putExtra("memberID", memberID_val);
startActivity(modify_intent);
}
});
}
我在adaper xml(view\u member\u entry.xml)中添加了
Delete
按钮。因为我需要对每个列表视图行项目执行delete
操作。任何人都可以帮助我。谢谢。主活动的布局文件是activity\u main.xml:,并且它没有名为delete\u btn的元素作为按钮,但是有一个按钮作为查看成员条目的元素。xml:,您正在活动中加载活动主项,并试图从中获取删除。但是在该布局xml中没有任何delete\u btn
。检查你的代码。@stealthjongdelete\u btn.setOnClickListener(新OnClickListener(){-->Null指针异常
我已经提到过清理你的项目(project->Clean)你的delete\u btn不是你试图定位它的主布局的一部分(显然,它会抛出一个NPE)。它是在适配器中膨胀的布局的一部分,用作列表视图项(可以有多个)。使用自定义适配器并在其中定义删除逻辑(或使用接口在“活动”中执行此操作)。这里的一个例子:我已经知道了。请仔细阅读问题。我需要的是:我在adaper xml中添加了删除按钮(view\u member\u entry.xml)。因为我需要对每个列表视图行项目执行删除操作。
对此有任何建议。您对布局的整个想法都乱七八糟。您无法从其他布局中获取按钮并尝试在其他位置使用它。如果要将onclick listener设置为使用view创建的按钮,我们会为您当前的问题编写答案_成员项布局,然后将onclick侦听器设置为按钮delete\u btn from the custome adapter!这不是将onclick侦听器添加到此按钮的方法因为listview需要一个custome布局,最好通过custome adapter。