android message的tab在哪里,Android开发 – 显示Tab Activity内部的AlertDialog

在尝试在Tab活动中显示一个警告对话框时,应用出现强制关闭的问题。错误日志显示`WindowManager$BadTokenException`,表明活动的令牌无效。问题发生在`dialog.show()`行。解决方案是使用`this.getParent()`替换`this`来创建对话框的构造器,因为活动在TabHost生成的ActivityGroup中运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我无法获得显示Tab活动内部的警告对话框.我的应用程序每次尝试时都会强行关闭并显示警告对话框.我的代码如下:

public class TablesActivity extends ListActivity {

final int INFO_ID = 0;

final int STATUS_ID = 1;

AlertDialog alert = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setMessage("Are you sure you want to mark table as dirty?")

.setCancelable(false)

.setPositiveButton("Yes",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

Toast.makeText(getApplicationContext(), "Table Marked Dirty",

Toast.LENGTH_LONG).show();

}

})

.setNegativeButton("No", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

dialog.cancel();

}

});

alert = builder.create();

setListAdapter(new ArrayAdapter(this, R.layout.history,

TABLES));

ListView lv = getListView();

lv.setTextFilterEnabled(true);

lv.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView> parent, View view,

int position, long id) {

// When clicked, show a toast with the TextView text

Toast.makeText(getApplicationContext(),

((TextView) view).getText(), Toast.LENGTH_LONG).show();

}

});

lv.setOnItemLongClickListener(new OnItemLongClickListener() {

@Override

public boolean onItemLongClick(AdapterView> arg0, View arg1,

int arg2, long arg3) {

alert.show();

// TODO Auto-generated method stub

return true;

}

});

}

static final String[] TABLES = new String[] { "Table 1", "Table 2",

"Table 3", "Table 4", "Table 5", "Table 6", "Table 7", "Table 8",

"Table 9", "Table 10", "Table 11", "Table 12", "Table 13"

};

}

当我尝试执行dialog.show()时,问题就出现了.我收到的logcat错误:

04-16 17:25:15.519:ERROR / AndroidRuntime(311):android.view.WindowManager $BadTokenException:无法添加窗口 – 令牌android.app.LocalActivityManager $LocalActivityRecord@44f08320无效;你的活动在运行吗?

该错误源自dialog.show()行.我不确定这里到底要做什么.在由TabHost生成的ActivityGroup提前启动之后,活动正在运行.

关于我可以做些什么来解决这个问题的想法?我的智慧结束了.

解决方法:

请用

`AlertDialog.Builder builder = new AlertDialog.Builder(this.getParent());`

绝对的

`AlertDialog.Builder builder = new AlertDialog.Builder(this);`

标签:android,android-activity,tabs,dialog,alert

来源: https://codeday.me/bug/20190626/1296416.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值