Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 非活动类中的findViewById_Android_Android Activity_Android Webview_Findviewbyid - Fatal编程技术网

Android 非活动类中的findViewById

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会让一切变得复杂。为什么你可以在主活动中使用一切,但在非活动类中不能使用很多:( 更新 我不能将我的课程扩展为活动,因为它扩

我知道StackOverFlow中有一些问题需要回答,但所有这些问题都是在特殊情况下回答的,没有人一般地回答这个问题。
有人能说出如何在非活动类中使用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
的用法,但它更新了片段并显示了de>Toast。任何关于Android应用程序开发的现代书籍或课程都会介绍如何使用
AsyncTask
,并根据其结果更新用户界面。