Android 非活动类中的findViewById
我知道StackOverFlow中有一些问题需要回答,但所有这些问题都是在特殊情况下回答的,没有人一般地回答这个问题。Android 非活动类中的findViewById,android,android-activity,android-webview,findviewbyid,Android,Android Activity,Android Webview,Findviewbyid,我知道StackOverFlow中有一些问题需要回答,但所有这些问题都是在特殊情况下回答的,没有人一般地回答这个问题。 有人能说出如何在非活动类中使用findViewById吗? 例如,在我的例子中,我想定义一个webview: WebView view=(WebView)findViewById(R.id.webview); 但是我不能,我真的不明白为什么android会让一切变得复杂。为什么你可以在主活动中使用一切,但在非活动类中不能使用很多:( 更新 我不能将我的课程扩展为活动,因为它扩
有人能说出如何在非活动类中使用findViewById吗?
例如,在我的例子中,我想定义一个webview:
WebView view=(WebView)findViewById(R.id.webview);
但是我不能,我真的不明白为什么android会让一切变得复杂。为什么你可以在主活动中使用一切,但在非活动类中不能使用很多:(更新
我不能将我的课程扩展为活动,因为它扩展了其他内容。
更新
这是一节课:
class DownloadTask extends AsyncTask<String, Void, Void> {
protected Void doInBackground(String... sUrl) {
...
WebView view=(WebView)findViewById(R.id.webview);
final Snackbar snackbar = Snackbar.make(view,"message",Snackbar.LENGTH_LONG);
...
}
}
class DownloadTask扩展了AsyncTask{
受保护的空白背景(字符串…sUrl){
...
WebView=(WebView)findviewbyd(R.id.WebView);
final Snackbar Snackbar=Snackbar.make(查看“消息”,Snackbar.LENGTH\u LONG);
...
}
}
我将在Snackbar中使用webview。1-在非活动类中:
public Context con;
public NonAct(Activity c){//NonAct = your non activity class name
this.con = c;
}
//in your class or function do this:
WebView view=(WebView)con.findViewById(R.id.webview);
2-使用发送上下文参数调用非活动类:
NonAct n = new NonAct(YourActivity.this);
试试这个
ClassName instance = new ClassName(this);
你们课的开始是这样的
public class ClassName extents to something {
public Activity activity;
//.... other attributes
public ClassName( Activity _activity){
this.activity = _activity;
//other initializations...
WebView mywebview = (WebView)this.activity.findViewById(R.id.mywebview);
您可以像这样使用FindView id
public class ClassName extents to something {
public Activity activity;
//.... other attributes
public ClassName( Activity _activity){
this.activity = _activity;
//other initializations...
WebView mywebview = (WebView)this.activity.findViewById(R.id.mywebview);
/////现在你想做什么就做什么
我希望这能帮助你
有人能说一下如何在非活动类中使用findViewById吗
将活动传递到正在非活动类上调用的方法中
或者,将活动传递给非活动类的构造函数
或者,在活动中调用findViewById()
,并将WebView
传递给非活动类
存在大量其他模式。您需要小心,不要尝试使用“活动”或WebView
的时间过长(例如,在用户旋转屏幕、按下后退键或以其他方式导致“活动”被销毁后)
我要在小吃栏中使用网络视图
使用Snackbar
是可以的。使用AsyncTask
中的Snackbar不是可以的,除非您非常小心地这样做。特别是:
- 只能尝试从主应用程序线程执行此操作(即,不要
)doInBackground()
- 确保正确处理配置更改、反压等。特别是,您不能在已销毁的活动上显示
Snackbar
你将在哪里显示你的
WebView
?@Tahmid Rahman我更新了我的问题。伙计,你在用谜语说话……请出示一些代码。@SAM:如果我要使用AsyncTask
,我经常使用保留的片段,如中。该示例没有显示Snackbar
的用法,但它更新了片段并显示了AsyncTask
,并根据其结果更新用户界面。