0

(X) 個のタブを持つアプリケーションを作成しました。各タブは動的に作成され、関連する WebView が作成されます。

「リロード」ボタンのあるメニューもあります。このメニューをクリックすると、動的に作成されたすべての Web ビューをリロードしたいのですが、ID のないこれらの Web ビューのハンドルを取得する方法が問題です。

WebView を作成するアクティビティのスニペットを次に示します。

@myId// 以下のコードで、2 つの Stringsと@urlが別のアクティビティから渡されることに注意してください。

WebView browse;
    protected void onCreate(Bundle savedInstanceState) {

        final Activity activity = this;     

        super.onCreate(savedInstanceState);
        browse=new WebView(this);
        browse.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN );        
        setContentView(browse);
        Intent sender=getIntent();
        String myUrl = sender.getStringExtra("url");
        int myId = Integer.parseInt( sender.getStringExtra("webid") );      
        browse.setId( myId );
        browse.setWebViewClient( new Youm7WebViewClient());
        browse.getSettings().setJavaScriptEnabled(true);        
        browse.loadUrl( myUrl );

    }

今、他のアクティビティで、「リロード」ボタンをクリックして次のことをしようとしました

i上記のアクティビティで送信された値と同じであることに注意してくださいMyId

// this crashes the app
for(int i=0;i<tabs.length;i++){
     String X = String.valueOf(i);
     WebView ourWebview = (WebView) findViewById(i);
     ourWebview.reload();
}
4

1 に答える 1

1

「browse」という名前の WebView 参照を再利用していない限り、browse.reload();その参照を再利用している場合 (つまり、別の新しい WebView を作成し、同じ参照を新しいものと同じように設定した場合) を呼び出すことができます。 ArrayList またはその他のデータ構造を保持して、WebView 参照を保持できます。次に、それをループして、各オブジェクトのインデックスで .reload() を呼び出すことができます。

于 2012-04-20T19:08:32.330 に答える