簡體   English   中英

在片段Android中更新ImageView

[英]Updating ImageView in a Fragment Android

我有一個MainActivity,上面只有幾個片段。

我正在嘗試使用Gallery更改片段中的ImageView。 但是,一旦選擇了映像,MainActivity將刷新,這會將MainActivity更改回默認片段。

獲得許可

 textViewChangeImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d(TAG,"Select Image executed");

            requestPermissions(
                    new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                    REQUEST_CODE);



        }
    });

應要求許可

 @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    Log.d(TAG,"Select Image Permission executed");

    if(requestCode == REQUEST_CODE){
        progressDialogUploadDp.setMessage("Uploading...");
       progressDialogUploadDp.show();

        if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
            Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setType("image/*");
            intent.putExtra("imageUpdate","true");
            startActivityForResult(intent,REQUEST_CODE);
        }else{
            Toast.makeText(getActivity(), "No Permission Granted", Toast.LENGTH_SHORT).show();
        }
        return;
    }

    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

活動結果

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK && data != null){

        try {
        Uri uri = data.getData();

        StorageReference filepath =
                storageReference.child("Photos").child("DPs").child(ID).child("profilepicture.jpg");
            InputStream inputStream = getActivity().getContentResolver().openInputStream(uri);

            Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
            imageviewpropic.setImageBitmap(bitmap);

            filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                    progressDialogUploadDp.hide();
                    progressDialogUploadDp.dismiss();


                }
            });

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


    }

期待解決方案!

更新 - -

主要活動

@Override
public void onStart() {
    super.onStart();
        mAuth.addAuthStateListener(mAuthListener);
}

@Override
public void onStop() {
    super.onStop();
    if (mAuthListener != null) {
        mAuth.removeAuthStateListener(mAuthListener);
    }
}

@Override
protected void onResume() {
    super.onResume();

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if(savedInstanceState==null) {
mRef.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            if (dataSnapshot.hasChild("questioners")) {
adapter = new SectionStatePagerAdapter(getSupportFragmentManager());
                                    adapter.addFragment(new HomeFragment(), "HomeFragment");
                                    viewPager.setAdapter(adapter);
}}
}

返回表單庫,活動將運行onActivityResult,然后將運行onResume。 因此您可以在onActivityResult上設置一個FLAG,並在onResume中創建一個IF來設置片段。

從您所說的來看,您的活動似乎正在調用onCreate方法並再次設置默認片段。 您只能在沒有保存狀態的情況下在onCreate()中創建新片段。

if(savedInstanceState==null) setFragment(fragment);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM