2017-02-05 17 views
-1

StackOverFlowにいくつかのトピックがありますが、これを尋ねていることは知っていますが、すべてが特別なケースで回答しています。
誰かが、非アクティビティクラスでfindViewByIdを使用する方法を言うことができますか?例については
私の場合、私はWebViewの定義したい:ノンアクティビティクラスのfindViewById

WebView view=(WebView)findViewById(R.id.webview); 

をしかし、Androidはあなたが主な活動にすべてのものを使用することができますcomplicated.Whyすべてのものを作る、なぜ私は、私は本当に理解していないことはできませんが、あなたができます「Tは、非活動のクラスでそれらの多くを使用:(
UPDATE
それは他かなっ拡張原因私は活動として私のクラスを拡張することはできません
UPDATE
これはクラスです。

 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); 
     ... 
    } 
} 

私はスナックバーでwebviewを使用します。

+0

に膨張ビューを渡す必要があり、このリンクを見て? –

+0

@Tahmid Rahman私の質問が更新されました。 – SAM

+0

バディ、あなたは謎の中で話しています...コードを表示してください。 –

答えて

0

1-における非アクティビティクラス:コンテキストargumantを送信して

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); 
0

この

ClassName instance = new ClassName(this); 

とあなたのクラスの開始を試してみてくださいこのようになります

012あなたはこの

WebView mywebview = (WebView)this.activity.findViewById(R.id.mywebview); 

/////ようfindviewby IDを使用することができます

は今uが私はこれをuを助けることを願っています

をやりたいです。

1

誰でも、非アクティビティクラスでfindViewByIdを使用する方法はありますか?

アクティビティを非アクティビティクラスで呼び出すメソッドに渡します。

または、アクティビティを非アクティビティクラスのコンストラクタに渡します。

またはアクティビティでfindViewById()と呼び出し、WebViewを非アクティビティクラスに渡します。

他にもたくさんのパターンが存在します。アクティビティを使用しないでください(たとえば、ユーザーが画面を回転したり、BACKを押すなどしてアクティビティを破棄した後など)、アクティビティを使用しないように注意する必要があります。

私はスナックバーでwebviewを使用します。

Snackbarを使用すると問題ありません。AsyncTaskから1つを使用すると、そうでない限りは非常に慎重にとなります。特に:

  • は、あなただけが正しく構成の変更、BACKを押す、などを扱っていることを確認します(つまり、いないdoInBackground()

  • メインアプリケーションスレッドからこれをやってみてください。特に、あなたは破壊活動

+0

これを行う方法を教えてもらえますか? – SAM

+0

@SAM:AsyncTaskを使うつもりなら、[this sample app](https://github.com/commonsguy/cw-omnibus/tree/master/Threads/)のような保持されたフラグメントを使うことがよくあります。 AsyncTask)。そのサンプルは 'Snackbar'の使用を示していませんが、断片を更新して' Toast'を表示します。 AsyncTaskを使用し、その結果に基づいてUIを更新することは、現代の本やAndroidアプリ開発のコースでカバーされています。 – CommonsWare

0

Snackbarを表示することができないだけでuはあなたがあなたの `WebView`が表示されますAsyncTask

findviewbyid in asyncTask