2014-04-12 113 views
2
public class Menu extends ListActivity { 

private String mstring[] = { "MainActivity", "Activity2", "Activity3", 
     "Activity4" }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, mstring)); 
} 

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    // TODO Auto-generated method stub 
    super.onListItemClick(l, v, position, id); 
    String positn = mstring[position]; 

    try { 
     Class ourclass = Class.forName("com.example.list" + positn); 
     Intent inten = new Intent(Menu.this, ourclass); 
     startActivity(inten); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 

    } 

我想從列表視圖開始活動,但這不起作用,它將如何啓動列表項目單擊活動。在列表視圖中開始活動

這裏是logcat的:

04-12 13:32:27.728: W/System.err(15518): java.lang.ClassNotFoundException: com.example.apaooo.MainActivity 
04-12 13:32:27.728: W/System.err(15518): at java.lang.Class.classForName(Native Method) 
04-12 13:32:27.728: W/System.err(15518): at java.lang.Class.forName(Class.java:204) 
04-12 13:32:27.728: W/System.err(15518): at java.lang.Class.forName(Class.java:169) 
04-12 13:32:27.728: W/System.err(15518): at com.example.appaooo.Menu.onListItemClick(Menu.java:29) 
04-12 13:32:27.738: W/System.err(15518): at android.app.ListActivity$2.onItemClick(ListActivity.java:319) 
04-12 13:32:27.738: W/System.err(15518): at android.widget.AdapterView.performItemClick(AdapterView.java:298) 
04-12 13:32:27.738: W/System.err(15518): at android.widget.AbsListView.performItemClick(AbsListView.java:1104) 
04-12 13:32:27.738: W/System.err(15518): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2792) 
04-12 13:32:27.738: W/System.err(15518): at android.widget.AbsListView$1.run(AbsListView.java:3468) 
04-12 13:32:27.738: W/System.err(15518): at android.os.Handler.handleCallback(Handler.java:730) 
04-12 13:32:27.738: W/System.err(15518): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-12 13:32:27.738: W/System.err(15518): at android.os.Looper.loop(Looper.java:213) 
04-12 13:32:27.738: W/System.err(15518): at android.app.ActivityThread.main(ActivityThread.java:5225) 
04-12 13:32:27.738: W/System.err(15518): at java.lang.reflect.Method.invokeNative(Native Method) 
04-12 13:32:27.738: W/System.err(15518): at java.lang.reflect.Method.invoke(Method.java:525) 
04-12 13:32:27.738: W/System.err(15518): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741) 
04-12 13:32:27.738: W/System.err(15518): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
04-12 13:32:27.738: W/System.err(15518): at dalvik.system.NativeStart.main(Native Method) 
04-12 13:32:27.738: W/System.err(15518): Caused by: java.lang.NoClassDefFoundError: com/example/apaooo/MainActivity 
04-12 13:32:27.748: W/System.err(15518): ... 18 more 
04-12 13:32:27.748: W/System.err(15518): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.apaooo.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.appaooo-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.appaooo-2, /vendor/lib, /system/lib]] 
04-12 13:32:27.748: W/System.err(15518): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53) 
04-12 13:32:27.748: W/System.err(15518): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
04-12 13:32:27.748: W/System.err(15518): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
04-12 13:32:27.748: W/System.err(15518): ... 18 more 

MianActivity.java

package com.example.appaooo; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends Activity { 

Button btn; 
    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final Context context = this; 
    btn = (Button) findViewById(R.id.btnGeo); 

    btn.setOnClickListener(new OnClickListener() { 

     @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
     Intent intent = new Intent(context, WebViewActivity.class); 
     startActivity(intent); 
     } 
    }); 
} 

}

清單文件是在這裏

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.appaooo" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="18" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 

    <activity 
     android:theme="@style/customTheme" 
     android:name="com.example.appaooo.Menu" 
     android:screenOrientation="portrait" 
     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.example.appaooo.MainActivity" 
      android:label="@string/app_name" ></activity> 

</application> 

首先我試圖啓動的主要活動僅

+0

請檢查您的活動名稱 –

+0

活動名稱是TURE – user3468384

+0

@ user3468384無論是包名是在清單或在MainActivity包名稱不匹配的一個清單中不同。所以檢查並修復它。它會工作。你還沒有發佈清單和活動代碼與進口 – Raghunandan

回答

2

更改此

Class ourclass = Class.forName("com.example.list" + positn);// .missing 

Class ourclass = Class.forName("com.example.list."+positn); 

確保您已聲明在manifest文件

造成的一切活動通過:java.lang.ClassNotFoundException:沒有找到類 「com.example.apaooo.MainActivity」on path:DexPathList [[zip file 「/data/app/com.example.appaooo-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example .appaooo-2 /供應商/ lib中/系統/ lib目錄]

你包的名字可能是

com.example.apaooo 

所以應該

Class ourclass = Class.forName("com.example.apaooo."+positn); 
+3

這是鷹眼抓:) –

+0

@PareshMayani謝謝:) – Raghunandan

+0

活動清單已經宣佈,但仍是同樣的問題 – user3468384

0

取代你這行代碼

Class ourclass = Class.forName("com.example.list" + positn); 

這一行

Class ourclass = Class.forName("com.example.apaooo." + positn); 

,並確保每個活動被註冊的Manifest.xml這個包的名字。 enter image description here