Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android OnClickListener在片段中不工作_Java_Android_Android Fragments_Onclicklistener - Fatal编程技术网

Java Android OnClickListener在片段中不工作

Java Android OnClickListener在片段中不工作,java,android,android-fragments,onclicklistener,Java,Android,Android Fragments,Onclicklistener,我有一个片段,显示了我从firebase中提取的用户详细信息。我正在尝试设置一个OnClickListener,以便登录的用户可以更改其图像,但我似乎无法使其正常工作。我已经查看了日志,没有发现任何错误。我看到其他人也在做类似的事情,似乎无法找到我的为什么不起作用 编辑:我发现了问题,但现在有一个不同的问题,当片段第一次加载时,Onlick不工作,直到我刷新片段,然后Onclick工作,但我不知道为什么片段需要刷新Onclick才能工作? 碎片 ImageView adminImage;

我有一个片段,显示了我从firebase中提取的用户详细信息。我正在尝试设置一个OnClickListener,以便登录的用户可以更改其图像,但我似乎无法使其正常工作。我已经查看了日志,没有发现任何错误。我看到其他人也在做类似的事情,似乎无法找到我的为什么不起作用

编辑:我发现了问题,但现在有一个不同的问题,当片段第一次加载时,Onlick不工作,直到我刷新片段,然后Onclick工作,但我不知道为什么片段需要刷新Onclick才能工作?

碎片

 ImageView adminImage;

  adminImage = v.findViewById(R.id.AdminProfilePicture);
        adminImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getActivity(),"Long hold to change image",Toast.LENGTH_SHORT).show();
            }
        });


       adminImage.setOnLongClickListener(new View.OnLongClickListener() {
           @Override
           public boolean onLongClick(View view) {
               Intent openGallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(openGallery,1000);
               return false;
           }
       });
设置片段的主要活动

   navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.nav_Account_admin:
                        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                                new ProfileAdminFragment()).commit();
                        break;
                    case R.id.nav_Games:
                        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                                new GamesAdminFragment()).commit();

                        break;
                    case R.id.nav_Users:
                        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                                new AllUsersAdminFragment()).commit();

                        break;
                    case R.id.nav_Fixture:
                        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                                new FixturesAdminFragment()).commit();

                        break;

                    case R.id.nav_News:
                        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                                new NewsAdminFragment()).commit();
                        break;
                    case R.id.nav_Contact:
                        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                                new ContactAdminFragment()).commit();

                        break;
                    default:

                }
                draw.closeDrawer(GravityCompat.START);
                return true;
            }
        });

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, draw, toolbar,
                R.string.nav_app_bar_open_drawer_description, R.string.navigation_drawer_close);
        draw.addDrawerListener(toggle);
        toggle.syncState();

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new ProfileFragment()).commit();
            navigationView.setCheckedItem(R.id.nav_Account);
        }
    }
XML


完整片段代码

public class ProfileAdminFragment extends Fragment {
    FirebaseAuth fAuth;
    FirebaseFirestore fStore;
    TextView uName, uEmail, uPhone;
    FusedLocationProviderClient fusedLocationProviderClient;
    TextView userlocation;
    ImageView adminImage;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {


        View v = inflater.inflate(R.layout.fragment_profile_admin, container, false);

        fAuth = FirebaseAuth.getInstance();
        fStore = FirebaseFirestore.getInstance();


        userlocation = v.findViewById(R.id.tv_location);
        fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(getContext());
        if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
            //   getLocation();
        } else {
            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 44);
        }


        uName = v.findViewById(R.id.profileFullName);
        uEmail = v.findViewById(R.id.profileEmail);
        uPhone = v.findViewById(R.id.profilePhone);

        DocumentReference docR = fStore.collection("Users").document(fAuth.getCurrentUser().getUid());
        docR.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
            @Override
            public void onSuccess(DocumentSnapshot documentSnapshot) {
                if (documentSnapshot.exists()) {
                    uName.setText(documentSnapshot.getString("FullName"));
                    uEmail.setText(documentSnapshot.getString("UserEmail"));
                    uPhone.setText(documentSnapshot.getString("PhoneNumber"));
                }
            }
        });
        getLocation();
        // profile image
        adminImage = v.findViewById(R.id.AdminProfilePicture);
        adminImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getActivity(), "Long hold to change image", Toast.LENGTH_SHORT).show();
            }
        });


        adminImage.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                Intent openGallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(openGallery, 1000);
                return false;
            }
        });


        return v;

    }
公共类ProfileAdminFragment扩展了片段{
弗斯;
FirebaseFirestore商店;
text查看uName、uEmail、uPhone;
FusedLocationProviderClient FusedLocationProviderClient;
TextView用户位置;
图像视图管理图像;
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
视图v=充气机。充气(R.layout.fragment\u profile\u admin,container,false);
fAuth=FirebaseAuth.getInstance();
fStore=FirebaseFirestore.getInstance();
userlocation=v.findviewbyd(R.id.tv\u位置);
fusedLocationProviderClient=LocationServices.getFusedLocationProviderClient(getContext());
if(ActivityCompat.checkSelfPermission(getContext()、Manifest.permission.ACCESS\u FINE\u LOCATION)==PackageManager.permission\u已授予){
//getLocation();
}否则{
ActivityCompat.requestPermissions(getActivity(),新字符串[]{Manifest.permission.ACCESS\u FINE\u LOCATION},44);
}
uName=v.findviewbyd(R.id.profileFullName);
uEmail=v.findViewById(R.id.profileEmail);
uPhone=v.findviewbyd(R.id.profilePhone);
DocumentReference docR=fStore.collection(“用户”).document(fAuth.getCurrentUser().getUid());
docR.get().addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公共无效(文档快照文档快照){
if(documentSnapshot.exists()){
uName.setText(documentSnapshot.getString(“全名”);
uEmail.setText(documentSnapshot.getString(“UserEmail”);
setText(documentSnapshot.getString(“电话号码”));
}
}
});
getLocation();
//轮廓图像
adminImage=v.findViewById(R.id.AdminProfilePicture);
adminImage.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Toast.makeText(getActivity(),“长时间保持以更改图像”,Toast.LENGTH_SHORT.show();
}
});
adminImage.setOnLongClickListener(新视图.OnLongClickListener(){
@凌驾
仅长按公共布尔值(视图){
Intent openGallery=newintent(Intent.ACTION\u PICK,MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI);
startActivityForResult(开放画廊,1000);
返回false;
}
});
返回v;
}

请尝试在ImageView中添加android:clickable=“true”

<RelativeLayout
    android:id="@+id/rellay1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/grad"
    android:paddingBottom="20dp">

    <RelativeLayout
        android:id="@+id/imageViewMain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:background="@drawable/circle_border">


        <ImageView
            android:id="@+id/AdminProfilePicture"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_margin="9dp"
            android:adjustViewBounds="true"
            android:background="@drawable/circle"
            android:padding="3dp"
            android:scaleType="centerInside"
            android:src="@drawable/ic_user"
            android:clickable="true" />

    </RelativeLayout>

例如,如果调用活动a中的片段, 然后: 将片段中的v初始化为公共静态

在您的活动中:

YourFragment.v.findViewById("AdminProfilePicture").setOnClickListener (...);
如果问题已解决,请回复 所以我发现我加载的是我的用户配置文件,而不是我的管理员配置文件,所以加载片段时存在冲突,所以为了使Onclick正常工作,我必须手动刷新片段

由此

new ProfileFragment()).commit();
对此,

new ProfileAdminFragment()).commit();

发布完整代码,此图像完整帮助您的长时间单击是否有效?不,两个OnClickListener都不工作。您可以粘贴片段的代码、膨胀视图的部分,并在此处设置片段的Listeneded完整代码吗
new ProfileAdminFragment()).commit();
  if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new ProfileAdminFragment()).commit();
            navigationView.setCheckedItem(R.id.nav_Account_admin);
        }