如何从片段 Android 访问活动变量

2022-08-31 13:18:29

在活动中,我有:

public class tabsmain extends Activity{
    public static Context appContext;

    public boolean lf_ch=false;

    public void onCreate(Bundle savedInstanceState){

我想访问并可能更改lf_ch从选项卡中的片段;

public class tabquests extends Fragment{ 
    public CheckBox lc;
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)//onCreateView
    { 
lc.setChecked(//set it to lf_ch);

但是,我似乎无法获得lf_ch的价值。


答案 1

试试这个:

public View onCreateView(...){
  tabsmain xxx = (tabsmain)getActivity();
  lc.setChecked(xxx.lf_ch);
}

答案 2

我知道这是一个古老的问题,但是这里有一个简单的答案,无需跳过任何箍即可工作。在“片段”中,定义一个变量,该变量是片段将所在的活动,然后在 onCreateView 中将该变量连接到该活动,然后您有一个可以获取主活动中的任何公共变量的引用。当我最终来到这里时,我已经忘记了它。以另一种方式做有点困难,因为你需要找到显示的确切片段。但是,有了这个,你就不需要以另一种方式去做,因为你可以很容易地来回传递东西。我希望这能帮助任何遇到它的人。

public Quiz_Avtivity mainQuiz;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_quiz, container, false);

mainQuiz = (Quiz_Avtivity) getActivity();
//Below is where you get a variable from the main activity
mainQuiz.AnyPublicVariable = whatEver;
//also
whatEver = mainQuiz.AnyPublicVariable

推荐