需要帮助以扩展ListActivity类运行我的Android应用程序

时间:2013-04-09 03:35:31

标签: android android-intent

我有一个名为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>

错误快照排序:

enter image description here

3 个答案:

答案 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>