android下popwindow +Spinner问题

Android 码拜 9年前 (2015-05-11) 1334次浏览 0个评论
 

 public void loadSpinner() {
         ArrayAdapter<Object> spinnerAdapter = new ArrayAdapter<Object>(this, R.layout.list_item_textview, license);
         spinnerAdapter
                 .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         mSpinner.setAdapter(spinnerAdapter);
         mSpinner
                 .setOnItemSelectedListener(new OnItemSelectedListener() {
  
                     public void onItemSelected(AdapterView<?> parent,
                             View view, int pos, long id) {
                         parent.setVisibility(View.VISIBLE);
                      /*   MainActivity.this.currentRssurl = MainActivity.this.license[pos];*/
                     }
  
                     public void onNothingSelected(AdapterView parent) {
                         // Do nothing.
                     }
                 });
     }

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
settingService = new SettingService(this);

service = new SettingService(this);

context = MainActivity.this;

init();

button = (Button) findViewById(R.id.baojing);

startalarm = service.getInt(“alarmTemp”);

if (startalarm <= 0) {
startalarm = 0;
/* txtAlarm.setText(“是”); */
AlarmManager.setStart(true);

} else {
/*startalarm = 0;
 txtAlarm.setText(“否”); */
startalarm=1;
AlarmManager.setStart(false);
button.setVisibility(View.INVISIBLE);
}

/* BMapView gps = new BMapView(); */

/* ShiTi shiTi = new ShiTi(); */
/*
 * shiTi.getTime(); shiTi.getGpsString();
 */
button.setOnClickListener(new View.OnClickListener() {

private Button b1;
private Button b2;
private Button b3;

public void onClick(View v) {

LayoutInflater factory = LayoutInflater.from(MainActivity.this);
View v1 = factory.inflate(R.layout.selector, null);

/* View v1=(View)getLayoutInflater().inflate(R.layout.selector,null);*/
//这两个就不是一样东西啊??????

/* page = (TextView) v1.findViewById(R.id.page);
page.setText(pageid + “”);*/

 LinearLayout linearLayout = new LinearLayout(MainActivity.this);
 
 /*linearLayout.addView(listView1,1);*/
 
 /*linearLayout.inflate(context, resource, root)*/
/*linearLayout.addView(mSpinner);*/

linearLayout.setOrientation(LinearLayout.VERTICAL);

listView11 = (ListView) v1.findViewById(R.id.list);

listView11.addHeaderView(listView1);

/* checkbox1 = (CheckBox) v1.findViewById(R.id.checkBox1);*/

/*textview4= (TextView) v1.findViewById(R.id.textView4);*/

mSpinner = (Spinner) v1.findViewById(R.id.spinner1);
context=getApplicationContext();

window.setBackgroundDrawable(new BitmapDrawable());

window.setOutsideTouchable(true);
window.setFocusable(true);
window.showAsDropDown(v,100,130);
window.update();
/* window.dismiss(); */
/*window.setBackgroundDrawable(new BitmapDrawable());*/
if (null == window/*||window.isShowing()*/) {
window.dismiss();
}

}

private void drawTitleLayout() {
// TODO Auto-generated method stub

}

});

android.view.WindowManager$BadTokenException: Unable to add window — token android.view.ViewRootImpl$W@41052610 is not valid; is your activity running?
在点击Spinner时会报错,然后不太清楚getParent()的用法和原理。parent = LayoutInflater.from(this.getParent()).inflate(R.layout.main,null); 如果写成这样也会报错
 ArrayAdapter<Object> spinnerAdapter = new ArrayAdapter<Object>(this, R.layout.list_item_textview, license);不知道是不是这里的this的问题
是啊,但我换了几个写法都报错,求一个不报错的啊
Mainactivity.this也报错

getApplication报错

getcontext报错

getParent也报错

显示数据没问题,一点击就报错~
在xml中设置spinner为可点击
还有,直接用this,试试吧
我可不可以问下~~怎么设置可点击~~
应该是点击spinner弹出的popup窗口找不到activity的上下文
这个spinner是在popwindow上的~
sipnner点击的下拉菜单就类似是个popupwindow
其实可以用个下拉模式的popupWindow:showAsDropdown(view)代替spinner,布局自己写一下,效果也是一样
showAsDropdown不是popwindow的位置吗??
引用 13 楼 dmzhjg 的回复:

showAsDropdown不是popwindow的位置吗??

不是啊,位置都是通过showAtLocation,这个是popupwindow弹出来的方式,例如actionbar上面的菜单下拉其实就是用的这个

我可以说求代码吗,我快完不成任务了~但我在popwindow需要放两个控件,根据spinner选择刷新listview列表~
40分
引用 14 楼 yuebanmumu 的回复:
Quote: 引用 13 楼 dmzhjg 的回复:

showAsDropdown不是popwindow的位置吗??

不是啊,位置都是通过showAtLocation,这个是popupwindow弹出来的方式,例如actionbar上面的菜单下拉其实就是用的这个

sorry,弄错了,showAsDropdown就是popwindow的位置你可以通过showAsDropdown(view v,x, y)来调整popupwindow的位置。其实和你第一个弹出来的popupwindow,没什么两样,你完全可以用你第一个popupwindow方法写出来

网上下载了一个自定义控件,搞定~
有自定义控件吗,能发个给我吗 479465910qq.com。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明android下popwindow +Spinner问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!