gpt4 book ai didi

java - 检查用户是否选择了 fragment 项目

转载 作者:行者123 更新时间:2023-12-02 09:22:28 25 4
gpt4 key购买 nike

我想检查用户是否选择了 fragment 项目[主页、搜索、发布、通知、个人资料],如果用户选择了其中任何一个,我想禁止在所选 fragment Activity 之前再次选择相同的 Activity 。

另外,在“主页” Activity 中,我有一个包含 X 个项目的回收器 View ,如果我再次单击主页 Activity 而不是禁用它,我想移动适配器以查看回收器 View 中的第一个项目 [灵感来自 Instagram 的想法]您单击主页,它会将您定向到顶部帖子。

我尝试调用fragmentactivity的Id但无法工作

package com.capstone.araba;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.view.MenuItem;

import com.capstone.araba.Fragments.HomeFragment;
import com.capstone.araba.Fragments.NotificationFragment;
import com.capstone.araba.Fragments.ProfileFragment;
import com.capstone.araba.Fragments.SearchFragment;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

import java.util.Objects;

import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;


public class MainActivity extends AppCompatActivity {

BottomNavigationView bottom_navigation;
Fragment selectedfragment = null;
private FirebaseUser user;
private static MainActivity mInstance;



public static synchronized MainActivity getInstance() {
return mInstance;
}

public void setConnectivityListener(ConnectivityReceiver.ConnectivityReceiverListener listener) {
ConnectivityReceiver.connectivityReceiverListener = listener;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mInstance = this;

bottom_navigation = findViewById(R.id.bottom_navigation);
bottom_navigation.setOnNavigationItemSelectedListener(navigationItemSelectedListener);


Bundle intent = getIntent().getExtras();
if (intent != null){
String publisher = intent.getString("publisherid");

SharedPreferences.Editor editor = getSharedPreferences("PREFS", MODE_PRIVATE).edit();
editor.putString("profileid", publisher);
editor.apply();

getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ProfileFragment()).commit();
} else {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new HomeFragment()).commit();
}

}


private BottomNavigationView.OnNavigationItemSelectedListener navigationItemSelectedListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {

@Override
public boolean onNavigationItemSelected( MenuItem item) {
user = FirebaseAuth.getInstance().getCurrentUser();

switch (item.getItemId()){
case R.id.nav_home:
selectedfragment = new HomeFragment();

break;
case R.id.nav_search:
selectedfragment = new SearchFragment();
break;
case R.id.nav_add:
selectedfragment = null;
startActivity(new Intent(MainActivity.this, PostActivity.class));
break;
case R.id.nav_heart:
selectedfragment = new NotificationFragment();
break;
case R.id.nav_profile:
if(user != null) {
SharedPreferences.Editor editor = getSharedPreferences("PREFS", MODE_PRIVATE).edit();
editor.putString("profileid", Objects.requireNonNull(FirebaseAuth.getInstance().getCurrentUser()).getUid());
editor.apply();
selectedfragment = new ProfileFragment();
break;
}
else{
Intent i = new Intent(MainActivity.this, GuestActivity.class);
startActivity(i);
}
}
if (selectedfragment != null) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
selectedfragment).commit();
}

return true;
}
};
}

因此,这背后的想法是不要让 Activity 每次我单击我已经所在的 fragment Activity 时总是重新启动或刷新...

最佳答案

覆盖onNavigationItemReselected(...):

  • 检查主页是否已选择,然后执行您想要的操作。

这应该可以解决这两个问题,因为当您重新选择搜索、发布或其他任何内容时,您没有在被覆盖的方法中涵盖该案例,因此它不会执行任何操作。

关于java - 检查用户是否选择了 fragment 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58592280/

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