Reputation: 2785
i followed numerous tuitorials like http://www.javacodegeeks.com/2013/09/android-listview-with-adapter-example.html Also followed the questions asked here How to make custom ListView to open other activities when clicking list item? However after trying the answers here(How to make custom ListView to open other activities when clicking list item?) my app keeps stopping whenever i select an item from my listview. My main activity code:
public class MainActivity extends Activity {
ListView list;
String[] web = {
"Notifications",
"School",
"What's Hot",
"Tell a friend",
"Hit us up",
"Settings",
"About & Help"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CustomList adapter = new
CustomList(MainActivity.this, web, imageId);
list=(ListView)findViewById(R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch(position){
case 0: Intent newActivity = new Intent(MainActivity.this, Notifications.class);
startActivity(newActivity);
break;
case 1: Intent newActivity1 = new Intent(MainActivity.this, School.class);
startActivity(newActivity1);
break;
case 2: Intent newActivity2 = new Intent(MainActivity.this, Whats_hot.class);
startActivity(newActivity2);
break;
case 3: Intent newActivity3 = new Intent(MainActivity.this, Tellafriend.class);
startActivity(newActivity3);
break;
case 4: Intent newActivity4 = new Intent(MainActivity.this, Hitusup.class);
startActivity(newActivity4);
break;
case 5: Intent newActivity5 = new Intent(MainActivity.this, Settings.class);
startActivity(newActivity5);
break;
case 6: Intent newActivity6 = new Intent(MainActivity.this, AboutHelp.class);
startActivity(newActivity6);
break;
}
}
@SuppressWarnings("unused")
public void onClick(View v){
};
});}
}
Here is the code of one of the activities (School)am trying to start :
public class School extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detail);
Intent newActivity1=new Intent();
setResult(RESULT_OK, newActivity1);
finish();
}
}
On my manifest i added this:
</activity>
<activity android:name=".Notifications"></activity>
<activity android:name=".School"></activity>
<activity android:name=".Whats_hot"></activity>
<activity android:name=".Tellafriend"></activity>
<activity android:name=".Hitusup"></activity>
<activity android:name=".Settings"></activity>
<activity android:name=".AboutHelp">
My logcat: 11-10 14:25:58.080: W/dalvikvm(13150): Refusing to reopen boot DEX '/system/framework/hwframework.jar' 11-10 14:25:59.360: I/Adreno200-EGL(13150): : EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.01.21.010_msm8625_JB_REL_2.0.3_Merge_release_AU (Merge) 11-10 14:25:59.360: I/Adreno200-EGL(13150): Build Date: 10/26/12 Fri 11-10 14:25:59.360: I/Adreno200-EGL(13150): Local Branch: 11-10 14:25:59.360: I/Adreno200-EGL(13150): Remote Branch: quic/jb_rel_2.0.3 11-10 14:25:59.360: I/Adreno200-EGL(13150): Local Patches: NONE 11-10 14:25:59.360: I/Adreno200-EGL(13150): Reconstruct Branch: AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.01.21.010 + NOTHING 11-10 14:26:00.450: I/Choreographer(13150): Skipped 90 frames! The application may be doing too much work on its main thread. 11-10 14:26:03.230: W/dalvikvm(13150): threadid=1: thread exiting with uncaught exception (group=0x413fe438)
There's something wrong somewhere that i cannot see.I'm new to android development and any help from you guys would be very much appreciated.
Upvotes: 3
Views: 20589
Reputation: 26
public class Menu extends ListActivity {
String classes[]={"startingPoint","TextPlay","TextPlayPerfectJavaCode","EXAMPLE2","example3","example4"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1,classes);
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String className=classes[position];
Class ourClass=null;
try{
ourClass=Class.forName("travis.thenewboston.com.thenewboston."+className);
Intent ourIntent = new Intent(getApplicationContext(), ourClass);//replacing Menu.this - getApplicationContext()
startActivity(ourIntent);
}
catch (ClassNotFoundException e){
e.printStackTrace();
}
finally {
Toast.makeText(Menu.this, "Clicked at Position: "+Integer.toString(position), Toast.LENGTH_SHORT).show();
}
}
}
Upvotes: 0
Reputation: 2941
By doing this way you don't have to write all the switch case for activity.
public class MainActivity extends Activity {
ListView list;
String[] web = {
"Notifications",
"School",
"What's Hot",
"Tell a friend",
"Hit us up",
"Settings",
"About & Help"
};
String[] s1 = {
"Notifications",
"School",
"Whats_hot",
"Tellafriend",
"Hitusup",
"Settings",
"AboutHelp"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CustomList adapter = new
CustomList(MainActivity.this, web, imageId);
list=(ListView)findViewById(R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String a=s1[position];
Class a1= null;
try {
a1 = Class.forName("<Your Package name>."+a);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
startActivity(new Intent(MainActivity.this,a1));
}
@SuppressWarnings("unused")
public void onClick(View v){
};
});
}
}
Don't forget to put point '.' immediately after your package name.
Upvotes: 1
Reputation: 43
public class MainActivity extends Activity {
ListView list;
String[] web = {
"Notifications",
"School",
"What's Hot",
"Tell a friend",
"Hit us up",
"Settings",
"About & Help"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CustomList adapter = new
CustomList(MainActivity.this, web, imageId);
list=(ListView)findViewById(R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch(position){
case 0: Intent newActivity = new Intent(MainActivity.this, Notifications.class);
startActivity(newActivity);
break;
case 1: Intent newActivity1 = new Intent(MainActivity.this, School.class);
startActivity(newActivity1);
break;
case 2: Intent newActivity2 = new Intent(MainActivity.this, Whats_hot.class);
startActivity(newActivity2);
break;
case 3: Intent newActivity3 = new Intent(MainActivity.this, Tellafriend.class);
startActivity(newActivity3);
break;
case 4: Intent newActivity4 = new Intent(MainActivity.this, Hitusup.class);
startActivity(newActivity4);
break;
case 5: Intent newActivity5 = new Intent(MainActivity.this, Settings.class);
startActivity(newActivity5);
break;
case 6: Intent newActivity6 = new Intent(MainActivity.this, AboutHelp.class);
startActivity(newActivity6);
break;
}
}
@SuppressWarnings("unused")
public void onClick(View v){
};
});}
}
Upvotes: 1
Reputation: 2992
Your code is running fine. I made it without Customadapter. All you need is below.
MainActivity.java
public class MainActivity extends Activity {
String[] web = {
"Notifications",
"School",
"What's Hot",
"Tell a friend",
"Hit us up",
"Settings",
"About & Help"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mainlist);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.activity_listview, web);
ListView list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch(position){
case 0: Intent newActivity = new Intent(MainActivity.this, School.class);
startActivity(newActivity);
break;
}
}
@SuppressWarnings("unused")
public void onClick(View v){
};
});
}//end oncreate
}//endactivity
School.java
public class School extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.school);
Intent newActivity1=new Intent();
setResult(RESULT_OK, newActivity1);
//finish();
}
}
activity_mainlist.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ListActivity" >
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
activity_listview.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Single List Item Design -->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dip"
android:textSize="16dip"
android:textStyle="bold" >
</TextView>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.zzztest2"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<activity
android:name=".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.example.zzztest2.School" android:label="@string/app_name"> </activity>
</application>
Upvotes: 5