其他分享
首页 > 其他分享> > android – 何时允许将Context转换为Activity?

android – 何时允许将Context转换为Activity?

作者:互联网

在一个警告Dialog类的showAlret(String message,Context ctx)方法中,我试图在对话框的布局XML中获取对TextView的引用:

TextView tv = (TextView)((MyActivity)ctx).findViewById(R.id.tv_about);

当然不是在调用inflate()之前:

LayoutInflater li = LayoutInflater.from(ctx);
View view = li.inflate(R.layout.aboutdialog, null);

问题是这个调用将tv返回为null.

由于代码编译没有任何警告,我假设这是由于“非法”将Context转换为MyActivity.

我遇到过很多情况,其中将Context to Activity转化为唯一真正有用的东西,那么为什么这种情况不起作用呢?

什么时候将Context转换为Activity才有意义?

在这方面有哪些“潜规则”?

解决方法:

LayoutInflater li = LayoutInflater.from(ctx);
View view = li.inflate(R.layout.aboutdialog, null);
TextView tv = view.findViewById(R.id.tv_about);

我知道你的textview是对话框xml的一部分,所以你需要在对话框视图而不是活动上找到ViewById().

标签:android,android-layout,android-context,android-activity,alertdialog
来源: https://codeday.me/bug/20190903/1797226.html