我的应用程序在android中的弹出菜单下启动新活动时显示错误

时间:2017-01-07 14:52:58

标签: android

我正在使用持有人的标签片段之一创建一个列表视图,在该列表视图中,我按下了弹出选项,如共享,显示优惠券等。一旦用户点击任何这些选项,新活动需要是开始。 当我点击"显示优惠券"菜单弹出窗口中的选项,以启动新活动,基本上显示优惠券的图像,我的应用程序崩溃说"不幸的是应用程序被停止" 我正在共享适配器和优惠券活动代码和menu_list.xml。请帮助为什么新活动没有开始。 1.我的适配器类:

<a href="#starks-panel" id="first" class="mdl-tabs__tab"  [class.is-active]="isOn">Starks</a

2。我的新活动:

    .modal-body 
{
  overflow-y:scroll;
  height:400px;
}
  1. Menu_list.xml:

    [

    package com.trillbit.retail.activity;
    
    import android.content.Context;
    import android.content.Intent;
    import android.media.Image;
    import android.os.Bundle;
    import android.support.v7.view.ContextThemeWrapper;
    import android.widget.PopupMenu;
    import android.view.LayoutInflater;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.ImageButton;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.ToggleButton;
    
    import com.trillbit.retail.R;
    
    /**
     * Created by shashikant.burnwal on 12-29-2016.
     */
    
    public class PlaceAdapter extends ArrayAdapter<Place>{
        final Context mContext;
        int mLayoutResourceID;
        Place mData[]=null;
    
        public PlaceAdapter(Context context, int resource, Place[] data) {
            super(context, resource, data);
            this.mContext = context;
            this.mLayoutResourceID = resource;
            this.mData = data;
        }
    
        @Override
        public Place getItem(int position) {
            return super.getItem(position);
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row=convertView;
            PlaceHolder holder=null;
            //row initialization
            if(row==null){
                LayoutInflater inflater=LayoutInflater.from(mContext);
                row=inflater.inflate(mLayoutResourceID,parent,false);
                holder=new PlaceHolder();
                holder.nameView=(TextView)row.findViewById(R.id.nameTextView);
                holder.offerView=(TextView)row.findViewById(R.id.zipcodeTextView);
                holder.imageView=(ImageView)row.findViewById(R.id.imageView);
                holder.menuButton=(ImageButton)row.findViewById(R.id.menu_button);
                row.setTag(holder);
    
    
    
            }else{
                holder=(PlaceHolder)row.getTag();
            }
            Place place=mData[position];
            holder.nameView.setText(place.mPlace);
            holder.offerView.setText(String.valueOf(place.mOffer));
            int resID=mContext.getResources().getIdentifier(place.mImage,"drawable",mContext.getPackageName());
            holder.imageView.setImageResource(resID);
    
    
            //menuButton Activity
    
            holder.menuButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    
                    Context wrapper = new ContextThemeWrapper(getContext(), R.style.popupMenuStyle);
                    PopupMenu popup = new PopupMenu(wrapper,view);
    
                    popup.getMenuInflater().inflate(R.menu.menu_list,popup.getMenu());
                    popup.show();
    
                    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        @Override
                        public boolean onMenuItemClick(MenuItem item) {
    
                            switch(item.getItemId()){
                                case R.id.share:
                                    return true;
                                case R.id.show_coupon:
                                    Intent intent = new Intent();
                                    intent.setClass(getContext(), CouponActivity.class);
                                    Bundle bunde = new Bundle();
                                    bunde.putString("coupon","Here is Coupon");
                                    intent.putExtras(bunde);
                                    getContext().startActivity(intent);
                                    return true;
                                case R.id.like:
                                    return true;
                                default:
                                    return true;
    
                            }
    
                        }
                    });
    
                }
            });
    
    
            return row;
    
        }
    
        private static class PlaceHolder{
            TextView nameView;
            TextView offerView;
            ImageView imageView;
            ImageButton menuButton;
    
        }
    }
    

    ] 1

  2. 我还附上了我的应用程序外观的图像:

1 个答案:

答案 0 :(得分:0)

1)确保您已将CouponActivity添加为清单文件中的活动。

2)当您从非活动类启动新活动时,需要在启动意图之前添加标记 Intent.FLAG_ACTIVITY_NEW_TASK

holder.menuButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Context wrapper = new ContextThemeWrapper(getContext(), R.style.popupMenuStyle);
            PopupMenu popup = new PopupMenu(wrapper,view);

                popup.getMenuInflater().inflate(R.menu.menu_list,popup.getMenu());
            popup.show();

            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {

                    switch(item.getItemId()){
                        case R.id.share:
                            return true;
                        case R.id.show_coupon:
                            Intent intent = new Intent();
                            intent.setClass(getContext(), CouponActivity.class);
                            Bundle bunde = new Bundle();
                            bunde.putString("coupon","Here is Coupon");
                            intent.putExtras(bunde);
                            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //Needed when starting an activity from a non-activity class
                            getContext().startActivity(intent);
                            return true;
                        case R.id.like:
                            return true;
                        default:
                            return true;

                    }

                }
            });

        }
    });