在我的Main2Activity
中有5个片段(home、settings、newPost、notifications和profile)。
在HomeFragment
中,我有一个RecycerView
,其中包含许多post视图,每个post都包含一个“open”按钮,该按钮应该打开一个PostFragment
。问题是,我只能在RecyclerViewAdapter
类和populateItemRows()方法中使用SetonClickListener
,所以当我不能使用GetActivity()
...
public class HomeFragment extends Fragment{
private RecyclerView recyclerView;
private RecyclerViewAdapter recyclerViewAdapter;
private boolean isLoading = false;
private ArrayList<String> rowsArrayList = new ArrayList<>();
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_home, container, false);
recyclerView = root.findViewById(R.id.recyclerView);
initAdapter();
initScrollListener();
return root;
}
private void initAdapter() {
recyclerViewAdapter = new RecyclerViewAdapter(getActivity(),2);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(recyclerViewAdapter);
}
private void initScrollListener() {
...
}
private void loadMore() {
...
}
}
RecycerViewAdapter:
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final int VIEW_TYPE_ITEM = 0;
private final int VIEW_TYPE_LOADING = 1;
private ArrayList<Post> list = new ArrayList();
private static final String TAG = RecyclerViewAdapter.class.getSimpleName();
private String userId = FirebaseAuth.getInstance().getCurrentUser() != null ? FirebaseAuth.getInstance().getCurrentUser().getUid() : null;
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private Context context;
private User currentUser;
private int type;
public RecyclerViewAdapter(Context context, int type) {
this.context = context;
this.type = type;
if (type == 0) {
myPostsRetriever(context);
} else if (type == 1) {
appliedToPostsRetriever(context);
} else if (type == 2) {
homePostsRetriever(context);
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
...
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
if (viewHolder instanceof ItemViewHolder) {
populateItemRows((ItemViewHolder) viewHolder, position);
} else if (viewHolder instanceof LoadingViewHolder) {
showLoadingView((LoadingViewHolder) viewHolder, position);
}
}
private void populateItemRows(ItemViewHolder viewHolder, int position) {
...
viewHolder.itemView.findViewById(R.id.seePostButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment newFragment = new PostFragment();
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.mobile_navigation, newFragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
}
您需要来自构造的上下文对象。
FragmentTransaction fm = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.mobile_navigation, newFragment);
transaction.addToBackStack(null);
transaction.commit();
问题内容: 我是Android的新手,这是我的第二个应用程序。我正在创建一个选项卡式活动,其中第一个片段具有创建新任务的形式,第二个片段具有所有已保存任务的列表,第三个片段从第二个列表中选择时将显示任务注释分段。第三个片段也应该像一个聊天活动,当您键入评论并点击发送按钮时,它会发布评论。当我从另一个地方(在下面的链接的GitHub分支中)实施此聊天活动时,该应用程序将完全按预期运行。但是,当我尝试
这是我完整的logcat: 在Android.support.v4.app.backStackRecord.doaddop(backStackRecord.java:414)在Android.support.v4.app.backStackRecord.replace(backStackRecord.java:449)在Android.support.v4.app.backStackRecord.
先生/女士,我想使用android JAVA将一个片段回调到另一个片段。我试图找到问题,但没有找到解决方案。若我使用接口,它会向活动发送回调响应,这是我不想要的。非常感谢。
我需要一些暑期项目的帮助 这是我的事件片段 这是我的MyList片段 我正在使用RecyclerViewCardView显示事件。其想法是,用户可以单击每张卡片右侧的大加号,卡片将显示在MyList片段中。我想问一下,是否可以将一张卡直接从一个片段转移到另一个片段?而且,这两个片段都包含在同一个活动中,这使得它有点棘手(我还没有找到任何可用的解决方案)。 如果不可能,另一种方法是将CardView
我试着从一个片段到主要片段。编译器不喜欢我的代码,但我不确定是什么问题。转换片段的最佳实践是什么? //这是我要导航到的主片段的xml 2019-07-12 17:49:45.091 959 4-9594/com.example.cribb E/AndroidRuntime:致命异常:主进程:com.example.cribb,PID:9594 Android.content.res.resour
问题内容: 我已经尝试了一段时间(同样,在这里搜索),当在其他片段中按下按钮时,它可以帮助我刷新MainFragment中的listView。Sommeone可以解释一下如何使其工作吗? 这是带有函数的MainFragment(我不包括其他函数,因为我看不到它们如何起作用): } 这是另一个片段: } 问题答案: 这段代码最适合我。似乎很容易