Android - 如何从片段中的父活动中正确获取变量

时间:2017-11-13 19:08:59

标签: java android android-fragments fragment

我阅读了有关创建接口的官方Android文档,以便能够在父活动和片段之间进行通信。所以当我调用其中一种方法从父活动中获取值时,我的应用程序崩溃了。

如果我的片段中有这样的界面

public interface InteractWithFragmentA { String getStringText(); }

在我的通话活动中,我用虚拟文本

测试了它
@Override 
public String getStringText(){ return "Some dummy text";}

我在FragmentA.java中有一个变量,它是对主机活动的引用并转换为InteractWithFragmentA,但当我使用

调用该方法时

_hostActivity.getStringText()

该应用程序崩溃了。有什么东西我不见了吗?我已经看到了一些建议的方法来获取主机活动的变量,方法是将它们公开,静态或其他一些方法,但我试图不将片段与该活动结合起来。提前谢谢。

2 个答案:

答案 0 :(得分:1)

哟应该这样做:

  

活动

 public class YourActivity implements YourActivityInterface{
     @Override   public String getStringText(){ return "Some dummy text";}
 }
  

接口

    public interface YourActivityInterface {
    String getStringText(); 
}
  

片段

  public class YourFragment extends Fragment {

    YourActivityInterface mListener;

     //your method...
     mListener.getStringText()


@Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof YourActivityInterface) {
            mListener = (YourActivityInterface) context;
        } else {
            throw new RuntimeException(context.toString()
                    + " must implement YourActivityInterface");
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }
    }

答案 1 :(得分:1)

从片段

尝试此操作
((YourActivity) getActivity()).getStringText();