在新建的广播机制的内部类public void onReceive(Context arg0, Intent arg1)方法里重写外部类的setContentView()

朝暮行风 发布于 2014/07/22 00:04
阅读 1K+
收藏 0

实现了一个TabHost双层嵌套布局
(一),外层TabHost有2个标签按钮:"主页"和"游戏",写在下面类里
public class MainActivity extends ActivityGroup implements OnTabChangeListener{

@Override
public void onTabChanged(String arg0) {
//根据广播机制自定义
    Intent intent =new Intent();
    intent.setAction("com.xijin.BOTTOM");
    tMainActivity.this.sendBroadcast(intent); 
    }
}


(二).点击"主页"标签,显示嵌套的一层TabHost,按钮包括"卡牌","出售卡牌"等等
此嵌套TabHost写在下面新的Activity类里面,,并对"卡牌"标签下的界面加入了几个按钮,执行其中一个按钮为"全部卡牌"的按钮,实现了一个"ListView"的动态布局覆盖了当前的几个按钮布局.

问题: 此时点击"主页"按钮,或者点击"游戏"按钮后再点击"主页按钮",都无法关闭覆盖在前面的"ListView"布局,显示包括"卡牌","出售卡牌"等等的原始布局.
尝试接收到"主页"的广播后,写方法setContentView(...)是会发生异常的,各种调用方式都不行
    为什么要接收"主页"广播呢?因为我设计的TabHost双层嵌套,是写在两个不同的Activity里面的,"主页"标签是一个TabHost的标签按钮,它本身又没有Id可以调用,所以想了这个广播实现方法.
    但是接收广播要实现一个内部类,它内部重写方法public void onReceive(Context arg0, Intent arg1){},遇到这个问题,就是通过"主页"标签的广播调用setContentView(...)方法,重新实现返回默认布局,我无法成功


public class HomepageActivity  extends Activity  implements OnTabChangeListener{
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);  
    RelativeLayout relativeLayoutHomepage = (RelativeLayout)      
    this.getLayoutInflater().inflate(R.layout.game_tabhost_homepage, null);  //动态布局(原始布局)
    setContentView(relativeLayoutHomepage);

    public void onClick(View view){

        Intent intent =new Intent();
        switch(view.getId()){
        //点击"全部卡牌"按钮实现"ListView"
        case R.id.all_cards_into_btn:
         RelativeLayout relativeLayoutAllCards = (RelativeLayout)        
        this.getLayoutInflater().inflate(R.layout.all_card_listview, null);
        setContentView(relativeLayoutAllCards);
        break;

       //点击"ListView"布局内的返回按钮关闭"ListView"布局,返回原始布局,但不是我希望的那个点击"主页"标签
            按钮实现的
        case R.id.return_Btn: 
        setContentView(R.layout.game_tabhost_homepage);
        break;

//内部类,用来接收广播
public class BottomBtnReceiver extends BroadcastReceiver{
    // 构造方法
    public BottomBtnReceiver() {

    }
    @Override
    public void onReceive(Context arg0, Intent arg1) {
    System.out.println("pppppppp");//可以执行,证明可以接受到外层TabHost"主页"标签的广播
    HomepageActivity.this.setContentView(R.layout.game_tabhost_homepage);//错误,无法实现,发生严重运行时异常,setContentView无法顺利调用,怎么解决?还试了几种方法都不行!
    }
}

上面问题是我仿"我叫Mt"这个游戏UI界面实验的时候遇到的,请指点一下思路错在哪里了

加载中
返回顶部
顶部