0

グローバル変数を宣言しようとしていますが、成功しません。このチュートリアルに従っていましたが、変数をフラグメントから MainActivity に転送したい場合、これは機能しません。

最初に、このコードをフラグメント クラスに追加しました。

public class WebViewFragment extends Fragment{
private WebView myState;

public WebView getState(){
    return myState;
  }
  public void setState(){
    myState = webView;
  }

}

そして、私はこれを私のものに追加しましたMainActivityが、うまくいきません:

WebViewFragment appState = ((WebViewFragment)getApplicationContext());
WebView state = appState.getState();

私はこれを取得しますerror: Cannot cast from Context to WebViewFragment

4

3 に答える 3

2

アプリのコンテキストをフラグメントにキャストしようとしていますが、うまくいきません。のようなもので正しいフラグメントを検索し、それgetFragmentManager().findFragmentById(R.id.my_fragment)をキャストする必要があります。

チュートリアルでは、彼はフラグメントではなく app オブジェクトを使用しています。アプリ オブジェクト内にあるすべての変数がガベージ コレクションされず、RAM がいっぱいになるため、これは悪い考えであり、可能であれば回避する必要があります。

于 2013-10-25T11:09:54.410 に答える
0

あなたがしなければならないことは次のとおりです。

これをアプリケーションクラスに入れます:

WebView state;
public WebView getState(){
    return myState;
}
public void setState(WebView webViewState){
    myState = webViewState;
}

次に、フラグメントでこれを実行して状態を設定します。

getActivity().getApplicationContext().setSate(state);

そして、これは状態を取得するアクティビティで:

getApplicationContext().getSate();

上記のコードは、null がないかどうかを確認できるように分割する必要があります。

于 2013-10-25T11:18:35.047 に答える