2014-02-01 3 views
0

Приложение для Android перестает работать после добавления нескольких действий. Он работал нормально, когда я занимался только одним видом деятельности, то есть основной деятельностью. Это вызывает проблемы после того, как я добавил другую активность и попытался связать ее со списком. Возможная проблема может заключаться в намерении.Приложение для Android перестало работать после добавления нескольких действий

У меня есть 3 других действия под названием «PActivity», «AActivity» и «DActivity», которые я хочу показать на основе элемента, выбранного в списке. Все три действия не содержат кода, кроме функции OnCreate() по умолчанию, которая добавляется eclipse.

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Resources res = getResources(); 
    String[] options = res.getStringArray(R.array.HomeOptions); 
    setListAdapter(new ArrayAdapter <String> (this, android.R.layout.simple_list_item_1, options)); 
    getListView().setTextFilterEnabled(true); 
} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) 
{ 
    super.onListItemClick(l, v, position, id); 
    switch (position) 
    { 
     case 1: 
      Intent PIntent = new Intent(this, PActivity.class); 
      startActivity(PIntent); 
      break; 
     case 2: 
      Intent AIntent = new Intent(this, AActivity.class); 
      startActivity(AIntent); 
      break; 
     case 3: 
      Intent DIntent = new Intent(this, DActivity.class); 
      startActivity(DisallowIntent); 
      break; 
     default: 
      break; 
    } 
} 

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#800000" 
     android:text="@string/Home" 
     android:textColor="#FFFFFF" 
     android:gravity="center" /> 

    <ListView 
     android:id="@+id/listview" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:entries="@array/HomeOptions" /> 

</LinearLayout> 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.MyApplication" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="19" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.MyApplication.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.MyApplication.PActivity" 
     android:label="@string/title_activity_p" > 
    </activity> 
    <activity 
     android:name="com.MyApplication.AActivity" 
     android:label="@string/title_activity_a" > 
    </activity> 
    <activity 
     android:name="com.MyApplication.DActivity" 
     android:label="@string/title_activity_d" > 
    </activity> 
</application> 

</manifest> 

LogCat

02-01 15:20:34.280: E/AndroidRuntime(1985): FATAL EXCEPTION: main 
02-01 15:20:34.280: E/AndroidRuntime(1985): Process: com.myapplication, PID: 1985 
02-01 15:20:34.280: E/AndroidRuntime(1985): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapplication/com.myapplication.MainActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at android.app.ActivityThread.access$700(ActivityThread.java:135) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at android.os.Handler.dispatchMessage(Handler.java:102) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at android.os.Looper.loop(Looper.java:137) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at android.app.ActivityThread.main(ActivityThread.java:4998) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at java.lang.reflect.Method.invoke(Method.java:515) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at dalvik.system.NativeStart.main(Native Method) 
02-01 15:20:34.280: E/AndroidRuntime(1985): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at android.app.ListActivity.onContentChanged(ListActivity.java:243) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:293) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at android.app.Activity.setContentView(Activity.java:1928) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at com.myapplication.MainActivity.onCreate(MainActivity.java:22) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at android.app.Activity.performCreate(Activity.java:5243) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140) 
02-01 15:20:34.280: E/AndroidRuntime(1985):  ... 11 more 

Разница:

Перед изменением идентификатора ListView, последние две строк моей андроид консоли была:

[2014-02-02 14:25:50 - MyApplication] Starting activity com.mobilesecurity.MainActivity on device emulator-5554 
[2014-02-02 14:25:54 - MyApplication ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.myapplication/.MainActivity } 

Но после изменения последнего сообщения (с ActivityManager) не был показан. Я начал получать это сообщение после того, как приложение начало сбой. Может быть, это помогает.

ответ

0

у вас есть

Intent PIntent = new Intent(this, PActivity.class); 
startActivity(PIntent); 

внутри onListItemClick(ListView l, View v, int position, long id)

это вероятно, принимается в качестве itemclick слушателя где вы должны пройти контексте

попытаться изменить его на:

Intent PIntent = new Intent(MainActivity.this, PActivity.class); 
startActivity(PIntent); 

и сделайте то же самое для остальных фрагментов кода.

EDIT

<ListView 
    android:id="@+id/listview" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:entries="@array/HomeOptions" /> 

изменить идентификатор, чтобы:

android:id="@android:id/list" 
+0

@Ratatouille: Я уже пробовал. Это не работает. – Faheem

+0

не возражаете, отправляя свой логарифм? –

+0

@Ratatouille: Я отредактировал вопрос, чтобы поставить LogCat. Пожалуйста, посмотри. – Faheem

Смежные вопросы