有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java安卓访问片段变量

我基本上是想访问片段中的一个变量,然后在我的活动中去掉它

它可以在我的片段中获得活动的变量,但不是相反:

我所做的:

// get method of MainActivity
final MainActivity activity = (MainActivity) getActivity();

甚至有可能让这个“反过来”吗

(我的活动中片段的访问变量)


共 (3) 个答案

  1. # 1 楼答案

    您需要实现侦听器。 你可以在这里阅读更多信息:Communicating with Other Fragments

    下面是一个如何将数据(或null)从活动传递到片段的代码示例:

    public class FragmentA extends Fragment implements FragmentCommunicator{
    
    
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        ((MainActivity)getActivity()).fragmentCommunicator = this;
    
    }
    @Override
    public void passDataToFragment(String str) {
        //str is the string variable you pass from the Activity, it can be null...
    
        }
    }}
    

    接下来是FragmentCommunicator类:

    public interface FragmentCommunicator{
    public void passDataToFragment(String str);}
    

    活动:

     public class MainActivity extends FragmentActivity{
    
    public FragmentCommunicator fragmentCommunicator;
    
    
    public void someMethod(String someString) {
    
     fragmentCommunicator.passDataToFragment(someString);
    
    
    }}
    

    当您从活动调用passDataToFragment()时,它会将字符串(或任何其他变量)传递给片段方法passDataToFragment()

  2. # 2 楼答案

    你可以通过id/标签从片段管理器获得你的片段,并用它们做任何你想做的事情

  3. # 3 楼答案

    这太简单了。 如果您在运行时添加片段(使用FragmentManager) 您正在创建该片段的对象。。。只要保留引用,就可以调用任何函数或访问片段的任何变量。 e、 g.你的碎片就是我的碎片

    MyFragment mf = new MyFragment();
    

    GetSupportFragmentManager()。开始。。。。。。你知道添加片段的代码吗 然后简单地调用任何方法。。。比如说。。。通过mf改变。改变

    或者你可以这样做

    MyFragment mf = (MyFragment) findFragmentById(R.id.container);
    and then again mf.change();