首页 > 解决方案 > Android:在fragment类中,通过getter方法访问Activity类的变量,变量的值保持为0

问题描述

Activity类在onCreate方法中有一个整数,通过getIntent设置。

    pos = getIntent().getIntExtra("position", -1); 

-1 是 getIntExtra() 的默认值,“位置”是我将它存储在另一个类中的键。对于点击来说,这个值应该是动态的,而且确实如此。但是,在fragment类中通过activity的getpos()方法访问它时,总是返回0。为什么?

这是 Acitivity 类的 OnCreate 方法:

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        pos = getIntent().getIntExtra("position", -1);}

这是 pos 的 Acitivity 类的 getter 方法:

public int get(){
        return pos;
    }

这是 Fragment 的 onCreateView 方法:

//an inflater
    Activity my=(Activity) getActivity();
    int posfrag = my.get();

我正在尝试通过此访问 Recycler View 的项目位置,但是这里的 posfrag 没有在片段中更新,尽管 pos 在 Activity 方法中正确更新。问题在于将该保留值传递给片段。

标签: javaandroidandroid-fragmentsandroid-intent

解决方案


尝试在 Fragment 内的 onActivityCreated() 方法中获取 pos 值。

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    // retrieve your variable value here
}

推荐阅读