gpt4 book ai didi

android - fragment里面的private变量都是null,为什么?

转载 作者:行者123 更新时间:2023-11-29 15:44:27 25 4
gpt4 key购买 nike

我在一个 fragment 中有一个空对象。基本思想是我有一个异步获取数据库的 Activity 。但是,我将在其中填充数据的 recyclerview 生活在一个 fragment 中。伪代码或多或少

Activity :

public void onCreate(Bundle savedInstanceState) {
//kicks off a query to the server
mData = new Gson().fromJson(getIntent().getExtras().getString(Constants.MYDATA), MyData.class);
if (mVenue == null) {
finish();
return;
}
// a bunch of stuff
// create a fragment
mMyFrag = new MyFrag();
}

public void CallBackWhenDone(final List<DataSet> dataset) {

// notify the frag that we are done
mMyFrag.notifyDataSetChanged(messages);
}

fragment :

private RecyclerView mRV;
private ParentActivity mActivity;
private ActivityAsynchData mAsynchData;

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.recycler, container, false);
mRV = (RecyclerView) view.findViewById(R.id.list);
mRV.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext(), LinearLayoutManager.VERTICAL, false));

if (null != mActivity) {
mAsynchData = mActivity.GetAsynchData();
}

if (null != mAsynchData) {
mRV.setAdapter(new MyRecyclerAdapter(getActivity(), mAsynchData));
}
}

// mRV is null when the activity "CallBackWhenDone" calls the frag
// all private variables are gone! why?
public void notifyDataSetChanged(final List<Message> messages) {
MyRecyclerAdapter adapter = ((MyRecyclerAdapter) mRV.getAdapter());
adapter.setMessageList(messages);
adapter.notifyDataSetChanged();
}

我最终将我的回收站(在本例中为 mRV) View 黑化为静态,但这看起来 super 黑。

有什么办法吗?换句话说,在创建 fragment 并且私有(private)变量全部消失后,我如何获取我的“mRV”。

最佳答案

我能理解的是,您初始化了 fragment 并尝试访问其中的回收器 View ,但它向您抛出空值。看到它为空,我并不感到惊讶。您调用该方法的方式不正确。您需要获取托管且已在运行的 fragment ,例如尝试这样做:

如果您正在使用支持 fragment ,请使用 getSupportFragmentManager 而不是 getFragmentManager

MyFrag fragment = (MyFrag) getFragmentManager().findFragmentById(R.id.fragmentHolder);
fragment.<specific_function_name>();

此处,R.id.fragmentHolder 是框架布局的 ID 或您用来在 Activity 中托管 fragment 的任何布局。

<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentHolder"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>

关于android - fragment里面的private变量都是null,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35075579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com