开发者

Using Intent with actions

Right. I have an action that needs to call another activity. As I understand this, I need to use Intents to do so if I want to parse values to this activity.

However, my code fails and im a little lost as to why.

My main activity:

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.main);

    final ArrayList<menuItem> AMI = new ArrayList<menuItem>();
    /*Menu item: String name, String menu ID*/
    /*ToDo: Logic to fecth new menu structure from server*/
    menuItem MI1 = new menuItem("menu item 1","1");
    menuItem MI2 = new menuItem("menu item 2","2");
    AMI.add(MI1);
    AMI.add(MI2);

    GridView gridview = (GridView) findViewById(R.id.GridView01);
    gridview.setAdapter(new menuAdapter(this, AMI));
    gridview.setOnItemClickListener(new OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
        {
            //Toast.makeText(Runner.this, AMI.get(position).getMenuID(), Toast.LENGTH_SHORT).show();                
            Intent myIntent = new Intent(v.getContext(), showMenu.class);
            myIntent.putExtra("parentID", AMI.get(position).getMenuID());
            startActivityForResult(myIntent, 0);
        }
    });

The "Toast" works just fine, however when I call the showMenu class it crashes. The showMenu class looks as follows:

public class showMenu ex开发者_StackOverflow中文版tends Activity{
public String menuParent = "";
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.submenu);

    Bundle extras = getIntent().getExtras();
    if(extras !=null)
    {
        menuParent = extras.getString("parentID");
    }
    /*ToDo: Logic to fecth new menu structure from server*/
    final ArrayList<menuItem> AMI = new ArrayList<menuItem>();
    menuItem MI1 = new menuItem("submenu 1","1");
    menuItem MI2 = new menuItem("submenu 2","2");
    AMI.add(MI1);
    AMI.add(MI2);

    GridView gridview = (GridView) findViewById(R.id.GridView01);
    gridview.setAdapter(new subMenuAdapter(this, AMI));
}

    public class subMenuAdapter extends BaseAdapter {
        private ArrayList<menuItem> MIL = new ArrayList<menuItem>();
        public static final int ACTIVITY_CREATE = 10;
        public subMenuAdapter(Context c, ArrayList<menuItem> AMI) {
            MIL = AMI;
        }
        public int getCount() {
            return MIL.size();

        }
        public Object getItem(int position) {
            return null;
        }
        public long getItemId(int position) {
            return 0;
        }
        public View getView(int position, View convertView, ViewGroup parent) {
            View v;
            if (convertView == null) {
                LayoutInflater li = getLayoutInflater();
                v = (LinearLayout) li.inflate(R.layout.grid_item, null);
                TextView tv = (TextView)v.findViewById(R.id.grid_text);
                tv.setText(MIL.get(position).getMenuname());

            } else {
                v = convertView;
            }
            return v;
        }
    }

}

Any idea why it crashes?


I think you have to register your Intent in your AndroidManifest.xml

<activity
        android:name="Package.Name.showMenu"
        android:theme="@android:style/Theme.Light"></activity>


As both activities are from same application, there are some other ways as well to pass data between instead of intents. check the link below:

http://developer.android.com/resources/faq/framework.html#3

If you want to use only intents, can you please specify the error you are facing, so that someone can reply you correctly.


if you want to parse values to another activity,you must use startActivityForResult.This is called sub_activity.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜