我正在开发应用程序,我无法在列表项单击上启动新活动。当我单击列表项时,应用程序崩溃,我找不到错误。活动的代码是
public class CourierActivity extends Activity {
DBController dbc=new DBController(this);
Cursor c;
SimpleCursorAdapter sca;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.courierlist);
final ListView courierlists=(ListView) findViewById(R.id.courierview);
dbc.open();
c=dbc.getcouriername();
String [] from ={"couriernames"};
int [] to={R.id.couriertext};
sca=new SimpleCursorAdapter(this, R.layout.courierlistrow, c, from, to);
courierlists.setAdapter(sca);
sca.notifyDataSetChanged();
c.requery();
courierlists.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Intent i=new Intent(CourierActivity.this,ServiceActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
});
}
}
这是我的logcat输出:
08-24 07:03:54.103: E/AndroidRuntime(1377): FATAL EXCEPTION: main
08-24 07:03:54.103: E/AndroidRuntime(1377): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.datab/com.example.datab.ServiceActivity}: java.lang.NullPointerException
08-24 07:03:54.103: E/AndroidRuntime(1377): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
08-24 07:03:54.103: E/AndroidRuntime(1377): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
08-24 07:03:54.103: E/AndroidRuntime(1377): at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-24 07:03:54.103: E/AndroidRuntime(1377): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
08-24 07:03:54.103: E/AndroidRuntime(1377): at android.os.Handler.dispatchMessage(Handler.java:99)
08-24 07:03:54.103: E/AndroidRuntime(1377): at android.os.Looper.loop(Looper.java:137)
08-24 07:03:54.103: E/AndroidRuntime(1377): at android.app.ActivityThread.main(ActivityThread.java:5041)
08-24 07:03:54.103: E/AndroidRuntime(1377): at java.lang.reflect.Method.invokeNative(Native Method)
08-24 07:03:54.103: E/AndroidRuntime(1377): at java.lang.reflect.Method.invoke(Method.java:511)
08-24 07:03:54.103: E/AndroidRuntime(1377): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-24 07:03:54.103: E/AndroidRuntime(1377): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-24 07:03:54.103: E/AndroidRuntime(1377): at dalvik.system.NativeStart.main(Native Method)
08-24 07:03:54.103: E/AndroidRuntime(1377): Caused by: java.lang.NullPointerException
08-24 07:03:54.103: E/AndroidRuntime(1377): at com.example.datab.ServiceActivity.onCreate(ServiceActivity.java:34)
08-24 07:03:54.103: E/AndroidRuntime(1377): at android.app.Activity.performCreate(Activity.java:5104)
08-24 07:03:54.103: E/AndroidRuntime(1377): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
08-24 07:03:54.103: E/AndroidRuntime(1377): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
08-24 07:03:54.103: E/AndroidRuntime(1377): ... 11 more
答案 0 :(得分:1)
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
Intent in1 = new Intent(getBaseContext(), SecondActivity.class);
startActivity(in1);
}
});
还添加清单文件的权限
<activity android:name=".SecondActivity" />
答案 1 :(得分:1)
您可以在listview的onItemClickListener方法中编写intent的代码,如下所示,这样无论listview的位置如何,您点击它都会转到新活动。
而且,也不要忘记在清单中声明您的新活动。
listview.setOnItemClickListener(new OnItemClickListener() {
//@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent ide = new Intent(Activity1.this,Activity2.class);
ide.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(ide);
}
});
答案 2 :(得分:0)
错误点是
Caused by: java.lang.NullPointerException
08-24 07:03:54.103: E/AndroidRuntime(1377):
at com.example.datab.ServiceActivity.onCreate(ServiceActivity.java:34)
您的ServiceActivity
line number 34
检查中有空指针异常,您可能正在使用任何未初始化的对象
它应该解决你的问题