Android声明全局变量片段
我试图声明一个全局变量,但没有成功。我一直在跟踪,但如果我想将一个变量从fragment传输到MainActivity,这就行不通了 首先,我将以下代码添加到片段类: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
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类?这些都不是,正如在您发布的教程中一样,您应该使用一个属于应用程序子类的类,并将其放在那里。