user3468384
user3468384

Reputation: 39

Starting Activity in listview

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();

    }

I want to start activity from listview but this is not working, how it will b possible to start activity on list item click.

here is 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);
        }
    });
}

}

Manifest file is here

<?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>

first i am trying to start main activity only

Upvotes: 2

Views: 181

Answers (2)

Irshad Khan
Irshad Khan

Reputation: 784

replace your this line code

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

with this line

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

and make sure each activity is registered in Manifest.xml with this package name. enter image description here

Upvotes: 0

Raghunandan
Raghunandan

Reputation: 133580

Change this

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

to

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

Make sure you have declared all activities in manifest file

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]]

Your package name is probably

com.example.apaooo

So it should be

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

Upvotes: 2

Related Questions