gpt4 book ai didi

java - 从 RecyclerView 内的 onClickListener 启动 Activity 后出现 NullPointerException

转载 作者:太空宇宙 更新时间:2023-11-04 13:48:02 25 4
gpt4 key购买 nike

Fragment 中的 RecyclerView 内从 onClickListener 调用 startActivity 后,我在 logcat 中收到以下错误。

java.lang.NullPointerException
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:1764)
at android.view.View.measure(View.java:15293)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:861)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:602)
at android.view.View.measure(View.java:15293)

这会在创建其他 Activity (调用 OnCreate)后发生

这是FragmentonViewCreated:

public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
View view = getView();
RecyclerView list = (RecyclerView) view.findViewById(R.id.list);

list.setHasFixedSize(true);
list.addItemDecoration(new DividerItemDecoration(getResources()));

//Tried commenting out three of the following lines, no effect
final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
list.setLayoutManager(layoutManager);
list.setItemAnimator(new DefaultItemAnimator());

ArrayList<TimelineItem> timelineItems = new ArrayList<>();
//populating the list with dummy data

adapter = new TimelineAdapter(timelineItems);
//this sets the onclick listener on the view inside the ViewHolder
adapter.setPrimaryClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openProfile();
}
});

list.setAdapter(adapter);

openProfile 的代码:

public void openProfile(){
Intent intent = new Intent(getActivity(), ProfileActivity.class);
//NPE happens after this
getActivity().startActivity(intent);
}

适配器代码:

@Override
public void onBindViewHolder(TimelineAdapter.ViewHolder viewHolder, int i) {
TimelineItem timelineItem = dataSet.get(i);

//bunch of findViewById

secondaryAction.setOnClickListener(secondaryClickListener);
textContent.setOnClickListener(primaryClickListener);
avatar.setOnClickListener(primaryClickListener);
}

事实证明,当切换到新 Activity 时,总是会发生此错误。不特定于此 OnClickListener

最佳答案

可能 fragment 尚未附加到 Activity ,因此 getActivity() 返回 null。处理 fragment 时,最好重写 onAttach() 并从那里获取 Activity 的实例,以确保 fragment 已附加。

关于java - 从 RecyclerView 内的 onClickListener 启动 Activity 后出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30628375/

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