2013-08-24 1 views
-1

Я работаю над приложением, в котором я не могу начать новую активность в элементе списка. Когда я нажимаю элемент «Список», приложение падает, и я не смог найти ошибку. Код для деятельностиНевозможно начать новую деятельность по элементу списка?

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

шоу ваш код для метода 'listview'' onclick' – kabuto178

ответ

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" /> 
+0

Это не работает. В моих списках я показываю из базы данных. –

1

Вы можете написать код для намерения внутри метода onItemClickListener 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); 

      } 
}); 
+0

Фактически я отображаю данные списка из базы данных. Так что любые изменения нужны? –

+0

Откуда вы заселяете свой список, вам не нужно беспокоиться об этом ... Вышеупомянутый код сам будет работать. – Kavin

0

Точка ошибка

Caused by: java.lang.NullPointerException 
    08-24 07:03:54.103: E/AndroidRuntime(1377):  
at com.example.datab.ServiceActivity.onCreate(ServiceActivity.java:34) 

Существует исключение нулевого указателя в вашем ServiceActivityline number 34 проверки, что вы можете использовать любой объект, который не инициализирован Это должно решить вашу проблему