Android Access Fragment Variable

时间:2015-09-08 20:47:47

标签: java android android-activity fragment

我基本上尝试的是访问片段中的变量并在我的活动中删除它。

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

我做了什么:

[{"Importancee":"adasdasd","Date":"2005-10-32","Descriptione":""},
{"Importance":"6.0","Date":"2015-10-02","Description":"a"}]

甚至可以将其作为“另一种方式”吗?

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

3 个答案:

答案 0 :(得分:0)

您可以通过片段管理器中的id / tag获取片段,并随意使用它们。

答案 1 :(得分:0)

这非常容易。 如果要在运行时添加片段(使用FragmentManager) 你正在创建该片段的对象...只需保留与你的引用,你就可以调用任何函数或访问片段的任何变量。 例如你的片段是MyFragment

MyFragment mf = new MyFragment();

getSupportFragmentManger()。beginTrans ......你知道添加片段的代码 然后简单地通过mf.change();

调用任何方法...来说...更改()

或者您可以执行类似

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

答案 2 :(得分:0)

您需要实现侦听器。 您可以在此处详细了解:Communicating with Other Fragments

以下是如何将数据(或null)从Activity传递到片段的代码示例:

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);


}}

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