我有一个名为main_activity.xml的活动和两个名为Main.java&的Java类。 Menu.java。在Menu.java类中,我扩展了ListActivity类。当我运行myApp时,它给弹出窗口强制关闭。 Plz的帮助。
以下是Menu.java的代码:
公共类Menu扩展了ListActivity {
String classes[]={"Main","Second","Third","China"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, classes));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String selectedItem= classes[position];
try{
Class myClass = Class.forName("com.example.myapp."+selectedItem);
Intent myIntent=new Intent(Menu.this, myClass);
startActivity(myIntent);
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
}
}
Main.java类代码:
public class Main扩展Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent=new Intent("com.example.myapp.Menu");
startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Mainfest文件代码:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
<activity
android:name="com.example.myapp.Main"
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.myapp.Menu"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MENU" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
错误快照排序:
答案 0 :(得分:0)
没有定义活动来处理意图。这可能是因为您没有在onCreate中正确启动您的意图。试试这样的事情
Intent intent = new Intent(Main.this,Menu.class)
Main.this.startActivity(intent);
编辑:我也一定要问你是否在清单中宣布了你的活动?
答案 1 :(得分:0)
你的代码一切都很好。当你打电话给其他班级时你没有明确说明。 任何方式使用下面的示例代码它工作正常..
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MyListActivity extends ListActivity {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
// Use your own layout
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.rowlayout, R.id.label, values);
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
String item = (String) getListAdapter().getItem(position);
Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
}
}
If u want to show it in your own layout use below rowlayout.xml file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/icon"
android:layout_width="22px"
android:layout_height="22px"
android:layout_marginLeft="4px"
android:layout_marginRight="10px"
android:layout_marginTop="4px"
android:src="@drawable/ic_launcher" >
</ImageView>
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/label"
android:textSize="20px" >
</TextView>
</LinearLayout>
现在你可以使用带有类名的按钮onclicklistner来调用这个类。
我希望它有所帮助:)
答案 2 :(得分:0)
像这样改变
Intent intent=new Intent(Main.this, Menu.class);
startActivity(intent);
像这样更改清单
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
<activity
android:name="com.example.myapp.Main"
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.myapp.Menu" >
</activity>
</application>