[英]Android “is activity running?” BadTokenException on PopupWindow
My current project demands that a PopupWindow be displayed with a nested Spinner but for some reason, applying this code: (This code essentially instantiates a LinearLayout, creates a Spinner with the elements defined in my array, spinnersRay , and places it all on a PopupWindow) 我当前的项目要求使用嵌套的Spinner显示PopupWindow ,但出于某些原因,应用此代码:(该代码本质上实例化LinearLayout,使用在我的数组spinnersRay中定义的元素创建Spinner,并将其全部放置在PopupWindow上)
//LINEAR LAYOUT
editsChangeLinear = new LinearLayout(this);
editsChangeLinear.setLayoutParams(parentMatches);
editsChangeLinear.setOrientation(LinearLayout.VERTICAL);
editsChangeLinear.setBackgroundColor(Color.LTGRAY);
//ARRAYLIST & ADAPTER
ArrayList<String> arrayList = new ArrayList<String>();
for(SpinnerIndex i : spinnersRay){
if(!i.name.replaceAll("\\s","").equals("TUTORIALS"))
arrayList.add(i.name);
}
spinner = new Spinner(this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_dropdown_item,arrayList);
spinner.setAdapter(spinnerArrayAdapter);
//ADD VIEW
editsChangeLinear.addView(spinner);
editsChangePopup = new PopupWindow(editsChangeLinear,
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
editsChangePopup.setFocusable(true);
editsChangePopup.setContentView(editsChangeLinear);
editsChangePopup.showAtLocation(outerScrollView,1,0,0);
I am always given the same BadTokenException whenever I click the Spinner, which clear displays the Strings returned from my i.name calls which merely access the name elements of my own custom Spinner class called SpinnerIndex which extends Spinner. 每当我单击Spinner时,我总是会得到相同的BadTokenException,它清楚地显示了从我的i.name调用返回的字符串,这些i.name调用仅访问我自己的自定义Spinner类的名称元素,该类扩展了SpinnerIndex。 The Spinner (or at least its very first element) appears to be properly formed, but this exception is thrown whenever I tap it.
微调框(或至少是它的第一个元素)看起来格式正确,但是只要我点击它,就会抛出此异常。 I do not understand why.
我不理解为什么。
I have tried placing things in seperate Threads or toying with the context but I am quite lost here. 我曾尝试将事情放在单独的线程中或在上下文中玩弄,但是我在这里很迷茫。
Try to use , May be it may help you 尝试使用,可能对您有帮助
runOnUiThread(new Runnable() {
@Override
public void run() {
editsChangePopup = new PopupWindow(editsChangeLinear,
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
editsChangePopup.setFocusable(true);
editsChangePopup.setContentView(editsChangeLinear);
editsChangePopup.showAtLocation(outerScrollView,1,0,0);/ TODO Auto-generated method stub
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.