首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击spinner将给WindowManager$BadTokenException

单击spinner将给WindowManager$BadTokenException
EN

Stack Overflow用户
提问于 2012-02-03 09:07:12
回答 3查看 2K关注 0票数 3

我使用Tabwidget,Tab的实现方式与在教程中显示的相同

MainActivity -> Activity1 -> Activity2(给定图像)

现在,点击旋转器

代码语言:javascript
复制
 android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@44eb8748 is not valid; is your activity running?

我已经试过Android旋转错误: android.view.WindowManager$BadTokenException:无法添加窗口了,但这对我没有帮助

我知道的上下文有问题,但是我不知道是什么

听是我的意图,开始DetailActivity

代码语言:javascript
复制
intent = new Intent(getParent(), DetailActivity.class);
TabGroupActivity parentActivity = (TabGroupActivity)getParent();
parentActivity.startChildActivity("SelectActivity", intent);

我给出的DetailActivity代码

代码语言:javascript
复制
@Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.package_detail);
        setUpViews();

        id = getIntent().getExtras().getInt("WEBSITE_ID");

        adapter = new KeywordAdapter(getApplicationContext(), id,
                getLNApplication().getKeyworddetail());
        listTags.setAdapter(adapter);

        spinneAdapter = new SpinnerListAdapter();
        spinnerList.setAdapter(spinneAdapter);
        spinnerList.setSelection(id, true);
        spinnerList
                .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    public void onItemSelected(AdapterView<?> parent,
                            View view, int position, long id) {

                        // txtHeader.setText(getLNApplication().getWebsiteList()
                        // .get(position).getName());
                        adapter.forceReload();
                        adapter = new KeywordAdapter(DetailActivity.this,
                                position, getLNApplication().getKeyworddetail());
                        listTags.setAdapter(adapter);
                    }

                    public void onNothingSelected(AdapterView<?> parent) {

                    }
                });

    }

SpinnerAdapter代码

代码语言:javascript
复制
public class SpinnerListAdapter extends BaseAdapter {

        private List<ClientDetail> siteList;

        public SpinnerListAdapter() {
            siteList = getLNApplication().getWebsiteList();
        }
        
        public void forceReload() {
            notifyDataSetChanged();
            
        }

        @Override
        public int getCount() {
            return siteList.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return siteList.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = convertView;
            
//          LayoutInflater inflater = (LayoutInflater) context
//              .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
//          LayoutInflater inflater = getLayoutInflater();
    
//          LayoutInflater inflater = LayoutInflater.from(DetailActivity.this.getParent());
    
            LayoutInflater inflater = LayoutInflater.from(DetailActivity.this.getParent());
                view = inflater.inflate(R.layout.spinner_item_display, null);
                TextView websiteName = (TextView) view.findViewById(R.id.spinnerItem);
            if (siteList.get(position).getName() != null) {
                websiteName.setText(siteList.get(position).getName());
                websiteName.setTextColor(0xFF000000);
            }
            return view;
        }

        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            View view = convertView;
            
//          LayoutInflater inflater = (LayoutInflater) context
//                  .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            
//          LayoutInflater inflater = getLayoutInflater();
            
//          LayoutInflater inflater = LayoutInflater.from(DetailActivity.this.getParent());
            
            LayoutInflater inflater = LayoutInflater.from(DetailActivity.this.getParent());
                view = inflater.inflate(R.layout.spinner_dropdown_display, null);
                TextView websiteName = (TextView) view.findViewById(R.id.spinnerDropDownItem);
            if (siteList.get(position).getName() != null) {
                websiteName.setText(siteList.get(position).getName());
                websiteName.setTextColor(0xFF000000);
            }
            return view;
        }
    }

我做错什么了吗?

请帮我..。非常感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-03 09:16:09

经过

代码语言:javascript
复制
YourActivty.this.getParent()

作为ContextSpinner

有关更多信息,请参见这里这里

票数 1
EN

Stack Overflow用户

发布于 2012-02-03 09:16:59

在Tab活动中,如果您提供任何警报对话框,那么在这种情况下,您已经设置了选项卡活动的上下文&而不是当前的活动对象。

而不是

代码语言:javascript
复制
adapter = new KeywordAdapter(getApplicationContext(),id,getLNApplication().getKeyworddetail());
listTags.setAdapter(adapter);

请使用以下内容

代码语言:javascript
复制
adapter = new KeywordAdapter(Tabs.ctx,id,getLNApplication().getKeyworddetail());
listTags.setAdapter(adapter);

其中Tabs.ctx是选项卡活动的上下文&这是静态变量。

票数 1
EN

Stack Overflow用户

发布于 2013-05-06 21:02:59

TabWidget中,还可以使用以下代码解决此错误

代码语言:javascript
复制
View view = LayoutInflater.from(this.getParent()).inflate(R.layout.package_detail, null);
this.setContentView(view); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9126112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档