我跟随了许多像http://www.javacodegeeks.com/2013/09/android-listview-with-adapter-example.html这样的保镖 还按照此处提出的问题How to make custom ListView to open other activities when clicking list item? 然而,在这里尝试了答案(How to make custom ListView to open other activities when clicking list item?)后,每当我从列表视图中选择一个项目时,我的应用程序就会一直停止。 我的主要活动代码:
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){
};
});}
}
&#13;
以下是我尝试开始的其中一项活动(学校)的代码:
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();
}
}
&#13;
在我的清单上,我添加了这个:
</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">
&#13;
我的logcat: 11-10 14:25:58.080:W / dalvikvm(13150):拒绝重启开机DEX&#39; /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):建造日期:10/26/12周五 11-10 14:25:59.360:I / Adreno200-EGL(13150):本地分行: 11-10 14:25:59.360:I / Adreno200-EGL(13150):远程分支:quic / jb_rel_2.0.3 11-10 14:25:59.360:I / Adreno200-EGL(13150):本地补丁:无 11-10 14:25:59.360:I / Adreno200-EGL(13150):重建分支:AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.01.21.010 + NOTHING 11-10 14:26:00.450:I / Choreographer(13150):跳过90帧!应用程序可能在其主线程上做了太多工作。 11-10 14:26:03.230:W / dalvikvm(13150):threadid = 1:线程退出未捕获异常(组= 0x413fe438)
在某些地方出现了一些我无法看到的错误。我是Android开发的新手,非常感谢你们的任何帮助。
答案 0 :(得分:5)
您的代码运行正常。我没有Customadapter就做到了。您只需要下面的内容。
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>
答案 1 :(得分:1)
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){
};
});}
}
答案 2 :(得分:1)
通过这种方式,您不必为活动编写所有开关案例。
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){
};
});
}
}
不要忘记提出要点。&#39;紧跟包裹名称后。
答案 3 :(得分:0)
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();
}
}
}