我在onPostExecute中创建了这样的适配器,并且我以编程方式设置了按钮的ID。
list.add(new adapters.GunADP("name","name","name",buttonId));
//i set button id 5000
当我尝试在onPostExecute方法结束时使用getId时,android无法找到该ID。我也无法从onCreate获取该ID,因为当app启动时,buttun不存在。 我创建hackButton试图从hackButton的onClickListener获取id,id返回成功,因为onpostexecute方法已经完成,现在id存在,但我不想这样使用。
btn_devam = (Button) findViewById(R.id.button_ileri);
btn_devam.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button x = (Button) findViewById(5000);
x.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(this, "tag "+v.getTag()+"id "+v.getId(), Toast.LENGTH_SHORT).show();
}
});
}
});
那么我怎样才能获得按钮的id,这是我在onPostExecute完成后以编程方式创建的?
我想使用此代码;
Button x = (Button) findViewById(5000);
我不能在oncreate中使用它,也不能在onpostexecute结束时使用它。那么如何在创建之后获得特定的id。
答案 0 :(得分:0)
我认为您缺少包含该按钮的视图的引用。
yourView.findViewById("Id to search");
yourview是您的按钮的父视图的引用,即函数参数中的 V 。
答案 1 :(得分:0)
我已经解决了!
我在创建
中创建了这样的线程private Thread mMainThread;
mMainThread = new Thread(){
@Override
public void run(){
try{
synchronized (this) {
wait(2000);
try{
Button x = (Button) findViewById(5000);
x.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(BiletSecim.this, "tag "+v.getTag()+" id "+v.getId(), Toast.LENGTH_SHORT).show();
}
});
}catch(Exception e){
}
}
}catch (Exception e) {
}
}};
然后在onpostexecute方法结束时,我启动线程
mMainThread.start();
2000毫秒对我来说没问题。