Communication between TabActivity and the embedded activity

后端 未结 5 847
Happy的楠姐
Happy的楠姐 2021-01-14 15:44

I am trying to figure out the best practice of communication between a TabActivity and the child activity embedded in this TabActivity.

In my TabActivity, there is a

5条回答
  •  长情又很酷
    2021-01-14 16:41

    You can use getParent() to obviate the need to do any of this.

    Here's my launcher child class with buttons that switch between activities handled by the tabHost:

    public class LaunchPadActivity extends Activity implements OnClickListener {
    
    private static final int ICON_PROFILE = 0;
    
    private static final int ICON_SEARCH = 1;
    
    private static final int ICON_MAP = 2;
    
    private static final int FAVOURITES = 3;
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        setContentView(R.layout.launchpad);
    
        GridView launchPad = (GridView) findViewById(R.id.launchpad);
        launchPad.setAdapter(new LaunchIconAdapter(this));
    }
    
    public class LaunchIconAdapter extends BaseAdapter {
        private Context mContext;
    
        // references to our images
        private Integer[] mThumbIds = { R.drawable.user, R.drawable.find,
                R.drawable.map, R.drawable.favourites, R.drawable.reviews,
                R.drawable.news, R.drawable.tutorial, R.drawable.info,
                R.drawable.options, };
    
        public String[] texts = { "Profile", "Search", "Map", "Favourites",
                "Reviews", "News", "Tutorial", "Info", "Options" };
    
        public LaunchIconAdapter(Context c) {
            mContext = c;
        }
    
        // Number of thumbs determines number of GridView items
        public int getCount() {
            return mThumbIds.length;
        }
    
        public Object getItem(int position) {
            return null;
        }
    
        public long getItemId(int position) {
            return 0;
        }
    
        // create a new ImageView for each item referenced by the Adapter
        public View getView(int position, View convertView, ViewGroup parent) {
            // Icon elements
            LinearLayout launchIcon;
            ImageView launchImage;
            TextView launchText;
    
            if (convertView == null) {
                launchIcon = (LinearLayout) ((LayoutInflater) mContext
                        .getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(
                        R.layout.launchicon, null);
    
            } else {
                launchIcon = (LinearLayout) convertView;
            }
    
            // Add ClickListener with metadata
            launchIcon.setTag(new Integer(position));
            launchIcon.setOnClickListener(LaunchPadActivity.this);
    
            // Get subviews
            launchImage = (ImageView) launchIcon
                    .findViewById(R.id.launch_image);
            launchText = (TextView) launchIcon.findViewById(R.id.launch_text);
    
            // Configure subviews
            launchImage.setImageResource(mThumbIds[position]);
            launchText.setText(texts[position]);
    
            return launchIcon;
        }
    
    }
    
    @Override
    public void onClick(View v) {
        int position = ((Integer) v.getTag()).intValue();
        switch (position) {
        case ICON_PROFILE:
            Toast.makeText(this, "Profile", Toast.LENGTH_LONG).show();
            break;
    
        case ICON_SEARCH:
            Toast.makeText(this, "Search", Toast.LENGTH_LONG).show();
            ((TabActivity) getParent()).getTabHost().setCurrentTab(1);
            break;
    
        case ICON_MAP:
            Toast.makeText(this, "Map", Toast.LENGTH_LONG).show();
            ((TabActivity) getParent()).getTabHost().setCurrentTab(2);
            break;
    
        case FAVOURITES:
            Toast.makeText(this, "Map", Toast.LENGTH_LONG).show();
            ((TabActivity) getParent()).getTabHost().setCurrentTab(3);
            break;
    
        }
    
    }
    
    }
    

    Works like a charm.

提交回复
热议问题