【问题标题】:dialog box not shown in an activity group活动组中未显示的对话框
【发布时间】:2013-05-09 22:04:40
【问题描述】:

我有一个 Tabactivity 我在哪里有 4 个标签。其中一个选项卡有许多通过 ActivityGroup 显示的子活动..我在其中一个子活动中有单选按钮..单击任何单选按钮时我需要显示一个对话框...m 无法显示该对话框盒子.....我收到如下错误:

android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@412369a0 is not valid; is your activity running?

我的代码在这里:

public class BabyProducts extends ActivityGroup {

Button back,home;

RadioGroup rg_babybath,
Context context=this;
String babybath;

RadioButton rb_babybath;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.babyproducts);

    rg_babybath=(RadioGroup)findViewById(R.id.radioGroup_babybath);

    back=(Button)findViewById(R.id.btn_back);
    home=(Button)findViewById(R.id.btn_home);
    back.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent activity2=new Intent(v.getContext(),Inventory.class);
            replaceContentView("activity2", activity2);

        }
    });

    home.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent activity2=new Intent(v.getContext(),AuditActivity.class);
            replaceContentView("activity2", activity2);

        }
    });

    rg_babybath.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            // TODO Auto-generated method stub
            rb_babybath=(RadioButton)findViewById(checkedId);
            babybath=rb_babybath.getText().toString();
            option(babybath);


}

});
}

public void option(String bbath)
{
    if(bbath.equals("Yes")){
        final Dialog dialog=new Dialog(BabyProducts.this);
        dialog.setContentView(R.layout.popup_stock);
        dialog.setTitle("Choose");
        Button save=(Button)dialog.findViewById(R.id.save);
        Button submit=(Button)dialog.findViewById(R.id.submit);


        save.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                dialog.dismiss();
            }

        });

        submit.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                dialog.dismiss();
            }
        });
        dialog.show();

    }

    if(bbath.equals("No")){
        final Dialog dialog=new Dialog(BabyProducts.this);
        dialog.setContentView(R.layout.popup_reason);
        dialog.setTitle("Choose");
        Button save=(Button)dialog.findViewById(R.id.save);
        Button submit=(Button)dialog.findViewById(R.id.submit);


        save.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                dialog.dismiss();
            }

        });

        submit.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                dialog.dismiss();
            }
        });
        dialog.show();

    }


}

@SuppressWarnings("deprecation")
public void replaceContentView(String id, Intent newIntent)
{
    View view=getLocalActivityManager().startActivity(id, newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
    this.setContentView(view);
}


}

【问题讨论】:

  • 不工作!仍然出现同样的错误
  • @shivani 请检查 onCheckedChanged 中 babybath 的值(即当您调用方法选项时),而不是在 if 中写入 equalIgnoreCase。
  • @ChiragJain 如果我将整个代码放在 oncreate 方法而不是 options 方法中,它会起作用吗???
  • 我认为您应该只检查值 bBath 因为如果您得到的不是是或否,那么您的对话框将不会出现。
  • @ChiragJain 它的值只有 YES 或 No....没有其他值..我通过显示 toast 消息进行检查

标签: android dialog radio-button


【解决方案1】:
Activity activity = getActivty.getParent();

if (activity != null)
  Dialog dialog=new Dialog(activity);

【讨论】:

    【解决方案2】:

    可能的问题可能是您的广播组 onclick 侦听器中的 v.getContext()。尝试其中任何一个来代替 getBaseContext()getApplicationContext() 或尝试传递您的 context 对象。

    【讨论】:

    • 当问题出在应用程序上下文时,为什么它会为 dialog.show() 显示此错误??我试过 getBaseContext() 和 getApplicationcontext()... 不工作..
    • 似乎异常与您的视图的上下文相关联,因为它是一个活动组,并且您没有在代码中使用您的 context 对象。尝试通过将视图或活动的每个上下文替换为 context 对象来更改代码。
    【解决方案3】:

    尝试使用:

    Dialog dialog = new Dialog(getParent());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      相关资源
      最近更新 更多