Android声明全局变量片段

Android声明全局变量片段,android,android-fragments,global-variables,Android,Android Fragments,Global Variables,我试图声明一个全局变量,但没有成功。我一直在跟踪,但如果我想将一个变量从fragment传输到MainActivity,这就行不通了 首先,我将以下代码添加到片段类: public class WebViewFragment extends Fragment{ private WebView myState; public WebView getState(){ return myState; } public void setState(){ myState = we

我试图声明一个全局变量,但没有成功。我一直在跟踪,但如果我想将一个变量从fragment传输到MainActivity,这就行不通了

首先,我将以下代码添加到片段类:

public class WebViewFragment extends Fragment{
private WebView myState;

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

}
然后我把它添加到我的
main活动中
,但它不起作用:

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

我发现这个
错误:无法从上下文转换为WebViewFragment

好吧,您正在尝试将应用程序上下文转换为一个片段,但无法工作。 您必须使用类似于
getFragmentManager().findFragmentById(R.id.my_fragment)
的内容来查找正确的片段并将其强制转换

在教程中,他使用的是app对象,而不是片段。这不是一个好主意,如果可能的话应该避免,因为应用程序对象中的所有变量都不会被垃圾收集,而是会填满RAM。

您所要做的就是:

将其放入应用程序类:

WebView state;
public WebView getState(){
    return myState;
}
public void setState(WebView webViewState){
    myState = webViewState;
}
然后在片段中,只需执行以下操作即可设置状态:

getActivity().getApplicationContext().setSate(state);
getApplicationContext().getSate();
在获取状态的活动中:

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

上面的代码应该分开,这样您就可以检查是否没有任何内容是空的。

我有一个类似的问题,通过阅读一些注释,我能够为一个案例提供解决方案。我有一个正在构建的自定义适配器类,需要从该适配器类修改一个全局变量。我的全局变量是附加到活动的片段的一部分。以下是我所做的:

在片段中,我设置了全局变量:

公共字符串myGlobalString=“初始值”

在我正在构建的适配器类中,在getView(…)函数中,我有:

MyFragment myFragment = (MyFragment) ((MyActivity) context).getFragmentManager().findFragmentById(R.id.fragment_my_fragment);
myFragment.myGlobalString = "new_value";

这对我有用。我试图在ListView中修改EditText中的值,因此在我的ListView适配器中,我添加了一个
addTextChangedListener
,并将代码放在
onTextChanged
函数中。

我不完全理解将代码放在何处。你们说我必须把代码的第一部分放到应用程序类中,你们指的是哪一部分?我的MainActivity类还是我的fragment类?这些都不是,正如在您发布的教程中一样,您应该使用一个属于应用程序子类的类,并将其放在那里。