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