Выбранное изображение галереи не отображается в третьем упражнении - PullRequest
0 голосов
/ 18 апреля 2020

Я создаю приложение, которое дает пользователю разрешение на выбор изображения из галереи в первом упражнении, а затем я хочу отправить его в «третье и четвертое занятие» и т. Д., Теперь дело в том, что я у меня есть действие загрузки, которое является «Вторым действием», и метод, который я использую для отправки выбранных изображений в несколько действий по порядку, - это обход их URI. Проблема в том, что изображения, выбранные пользователем, показываются во втором упражнении, но когда я передаю URI's из второго занятия в третье, четвертое и т. Д., Изображения НЕ показываются. сначала я подумал, что совершаю ошибку при передаче URI, поэтому я сделал тост-сообщение о третьем упражнении, чтобы проверить, получаю ли я Uri, и получил адрес Uri, но я не знаю, почему у меня не может быть Uri преобразован в растровое изображение и изображение. Я застрял с этой проблемой почти 2 недели, мой друг предложил создать несколько фрагментов вместо нескольких действий, но я вроде как ладья ie с созданием фрагментов и их работой.

Мой вопрос:

1- Есть ли другой способ, кроме создания нескольких фрагментов? если нет, то как заставить его работать по моим кодам, пожалуйста, не отправляйте меня на ссылки на веб-сайт android .developer. URI, или, может быть, отправив растровое изображение, если да, то как изменить мои коды? Потому что методы, которые я нашел в Google, ни помогли, ни сработали для моего кода.

Мои коды:

Первое действие:

public class MainActivity extends AppCompatActivity {


    Button myName;


    Button accept;



    HomeWatcher mHomeWatcher;


    Button btn1;
    Button btn2;
    Button btn3;
    Button btn4;

    static final String TAG = "Main2Activity";

    private static int PICK_IMAGE_REQUEST = 1;
    private static int PICK_IMAGE_REQUEST2 = 2;
    private static int PICK_IMAGE_REQUEST3 = 3;
    private static int PICK_IMAGE_REQUEST4 = 4;

    String encoded ;

    Uri imageUri;
    Uri imageUri2;
    Uri imageUri3;
    Uri imageUri4;


    Bitmap scaledx;

    TextView txt1;
    TextView txt2;
    TextView txt3;
    TextView txt4;


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



        doBindService();
        Intent music = new Intent();
        music.setClass(this, MusicService.class);
        startService(music);

        mHomeWatcher = new HomeWatcher(this);
        mHomeWatcher.setOnHomePressedListener(new HomeWatcher.OnHomePressedListener() {
            @Override
            public void onHomePressed() {
                if (mServ != null) {
                    mServ.pauseMusic();
                }
            }
            @Override
            public void onHomeLongPressed() {
                if (mServ != null) {
                    mServ.pauseMusic();
                }
            }
        });
        mHomeWatcher.startWatch();

        AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        audioManager.setStreamVolume(audioManager.STREAM_MUSIC, 10, 0);


        btn1 = findViewById(R.id.person1);
        btn2 = findViewById(R.id.person2);
        btn3 = findViewById(R.id.person3);
        btn4 = findViewById(R.id.person4);


        final MediaPlayer mp2 = MediaPlayer.create(getApplicationContext(), R.raw.pssound);



        accept = findViewById(R.id.accept);
        myName = findViewById(R.id.userUsername);









        LayoutInflater factory = LayoutInflater.from(this);

        final View textEntryView = factory.inflate(R.layout.layuoter, null);

        final EditText input1 = (EditText) textEntryView.findViewById(R.id.editText);
        final EditText input2 = (EditText) textEntryView.findViewById(R.id.editText2);
        final EditText input3 = (EditText) textEntryView.findViewById(R.id.editText3);
        final EditText input4 = (EditText) textEntryView.findViewById(R.id.editText4);
        final EditText input5 = (EditText) textEntryView.findViewById(R.id.editText5);




        final AlertDialog.Builder alert = new AlertDialog.Builder(this,R.style.MyAlertDialogStyle);
        alert.setIcon(null).setTitle(null).setView(textEntryView).setPositiveButton(" | انجام |",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                                        int whichButton) {


                        myName.setText(" خوش آمدی " + "  " +input1.getText().toString() );
                        btn1.setText(input2.getText().toString());
                        btn2.setText(input3.getText().toString());
                        btn3.setText(input4.getText().toString());
                        btn4.setText(input5.getText().toString());
                    }
                });

        alert.setCancelable(false);
        alert.show();







        accept.setEnabled(false);





        accept.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intentx = new Intent(getApplicationContext(), Loading.class);
                intentx.putExtra("imageUri", imageUri.toString());
                intentx.putExtra("imageUri2", imageUri2.toString());
                intentx.putExtra("imageUri3", imageUri3.toString());
                intentx.putExtra("imageUri4", imageUri4.toString());
                intentx.putExtra("you", btn1.getText().toString());
                intentx.putExtra("you2", btn2.getText().toString());
                intentx.putExtra("you3", btn3.getText().toString());
                intentx.putExtra("you4", btn4.getText().toString());
                startActivity(intentx);
                mp2.start();
                finish();
                overridePendingTransition( 0, R.anim.splashscreen );
            }
        });

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setType("image/*");
                startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);

                mp2.start();


            }
        });

        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent2 = new Intent(Intent.ACTION_GET_CONTENT);
                intent2.setType("image/*");
                startActivityForResult(Intent.createChooser(intent2, "Select Picture"), PICK_IMAGE_REQUEST2);

                mp2.start();


            }
        });


        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent3 = new Intent(Intent.ACTION_GET_CONTENT);
                intent3.setType("image/*");
                startActivityForResult(Intent.createChooser(intent3, "Select Picture"), PICK_IMAGE_REQUEST3);

                mp2.start();


            }
        });

        btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent4 = new Intent(Intent.ACTION_GET_CONTENT);
                intent4.setType("image/*");
                startActivityForResult(Intent.createChooser(intent4, "Select Picture"), PICK_IMAGE_REQUEST4);

                mp2.start();


            }
        });

//
//        imgFive.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//
//                Intent intent5 = new Intent(Intent.ACTION_GET_CONTENT);
//                intent5.setType("image/*");
//                startActivityForResult(Intent.createChooser(intent5, "Select Picture"), PICK_IMAGE_REQUEST5);
//
//
//                mp2.start();
//
//            }
//        });







    }


    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        try {

            if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && null != data) {
                // Get uri
                imageUri = data.getData();

                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
                int nh = (int) (bitmap.getHeight() * (1024.0 / bitmap.getWidth()));
                Bitmap scaledx = Bitmap.createScaledBitmap(bitmap, 1024, nh, true);
                btn1.setBackgroundResource(R.drawable.dady3);
                btn1.setEnabled(false);


                // Set image
//                imgOne.setImageBitmap(scaled);
//                t1.animate().alpha(1f);
//                imgTwo.setEnabled(true);


            } else if (requestCode == PICK_IMAGE_REQUEST2 && resultCode == RESULT_OK && null != data) {
                // Get uri
                imageUri2 = data.getData();

                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri2);
                int nh = (int) (bitmap.getHeight() * (1024.0 / bitmap.getWidth()));
                Bitmap scaled = Bitmap.createScaledBitmap(bitmap, 1024, nh, true);
                btn2.setBackgroundResource(R.drawable.dady3);
                btn2.setEnabled(false);
                // Set image
//                imgTwo.setImageBitmap(scaled);
//                t2.animate().alpha(1f);
//                imgThree.setEnabled(true);


            } else if (requestCode == PICK_IMAGE_REQUEST3 && resultCode == RESULT_OK && null != data) {
                // Get uri
                imageUri3 = data.getData();

                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri3);
                int nh = (int) (bitmap.getHeight() * (1024.0 / bitmap.getWidth()));
                Bitmap scaled = Bitmap.createScaledBitmap(bitmap, 1024, nh, true);
                btn3.setBackgroundResource(R.drawable.dady3);
                btn3.setEnabled(false);
                // Set image
//                imgThree.setImageBitmap(scaled);
//                t3.animate().alpha(1f);
//                imgFour.setEnabled(true);


            } else if (requestCode == PICK_IMAGE_REQUEST4 && resultCode == RESULT_OK && null != data) {
                // Get uri
                imageUri4 = data.getData();

                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri4);
                int nh = (int) (bitmap.getHeight() * (1024.0 / bitmap.getWidth()));
                Bitmap scaled = Bitmap.createScaledBitmap(bitmap, 1024, nh, true);
                btn4.setBackgroundResource(R.drawable.dady3);
                btn4.setEnabled(false);
                // Set image
//                imgFour.setImageBitmap(scaled);
//                t4.animate().alpha(1f);
                accept.setEnabled(true);

            }


        } catch (Exception e) {
            Toast.makeText(this, "Oops! Sorry", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
    }




    private boolean mIsBound = false;
    private MusicService mServ;
    private ServiceConnection Scon =new ServiceConnection() {


        @Override
        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
            mServ = ((MusicService.ServiceBinder) iBinder).getService();

        }

        @Override
        public void onServiceDisconnected(ComponentName componentName) {

            mServ = null;
        }};

        void doBindService() {
            bindService(new Intent(this, MusicService.class),
                    Scon, Context.BIND_AUTO_CREATE);
            mIsBound = true;
        }

        void doUnbindService() {
            if (mIsBound) {
                unbindService(Scon);
                mIsBound = false;
            }
        }
        @Override
        protected void onDestroy() {
            super.onDestroy();

            doUnbindService();
            Intent music = new Intent();
            music.setClass(this,MusicService.class);
            stopService(music);

        }

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

            if (mServ != null) {
                mServ.resumeMusic();
            }

        }
    @Override
    protected void onPause() {
        super.onPause();

        PowerManager pm = (PowerManager)
                getSystemService(Context.POWER_SERVICE);
        boolean isScreenOn = false;
        if (pm != null) {
            isScreenOn = pm.isScreenOn();
        }

        if (!isScreenOn) {
            if (mServ != null) {
                mServ.pauseMusic();
            }
        }

    }


}

Второе действие:

public class Loading extends AppCompatActivity {






    HomeWatcher mHomeWatcher;

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


        MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(),R.raw.countdw);
        mediaPlayer.start();


        doBindService();
        Intent music = new Intent();
        music.setClass(this, MusicService.class);
        startService(music);

        mHomeWatcher = new HomeWatcher(this);
        mHomeWatcher.setOnHomePressedListener(new HomeWatcher.OnHomePressedListener() {
            @Override
            public void onHomePressed() {
                if (mServ != null) {
                    mServ.pauseMusic();
                }
            }
            @Override
            public void onHomeLongPressed() {
                if (mServ != null) {
                    mServ.pauseMusic();
                }
            }
        });
        mHomeWatcher.startWatch();










            Bundle bundle = getIntent().getExtras();

        final String xr=bundle.getString("you");
        final String xr2=bundle.getString("you2");
        final String xr3=bundle.getString("you3");
        final String xr4=bundle.getString("you4");
        final String xrnew1=bundle.getString("imageUri");
        final String xrnew2=bundle.getString("imageUri2");
        final String xrnew3=bundle.getString("imageUri3");
        final String xrnew4=bundle.getString("imageUri4");



            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {

                    Intent intentx = new Intent(Loading.this, FirstPage.class);
                    intentx.putExtra("imageUri",xrnew1);
                    intentx.putExtra("imageUri2",xrnew2);
                    intentx.putExtra("imageUri3",xrnew3);
                    intentx.putExtra("imageUri4",xrnew4);
                    intentx.putExtra("you", xr);
                    intentx.putExtra("you2", xr2);
                    intentx.putExtra("you3", xr3);
                    intentx.putExtra("you4", xr4);
                    startActivity(intentx);
                    finish();
                    overridePendingTransition( 0, R.anim.splashscreen );


                }
            },3500);


        }





    private boolean mIsBound = false;
    private MusicService mServ;
    private ServiceConnection Scon =new ServiceConnection() {


        @Override
        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
            mServ = ((MusicService.ServiceBinder) iBinder).getService();

        }

        @Override
        public void onServiceDisconnected(ComponentName componentName) {

            mServ = null;
        }};

    void doBindService() {
        bindService(new Intent(this, MusicService.class),
                Scon, Context.BIND_AUTO_CREATE);
        mIsBound = true;
    }

    void doUnbindService() {
        if (mIsBound) {
            unbindService(Scon);
            mIsBound = false;
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();

        doUnbindService();
        Intent music = new Intent();
        music.setClass(this,MusicService.class);
        stopService(music);

    }

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

        if (mServ != null) {
            mServ.resumeMusic();
        }

    }
    @Override
    protected void onPause() {
        super.onPause();

        PowerManager pm = (PowerManager)
                getSystemService(Context.POWER_SERVICE);
        boolean isScreenOn = false;
        if (pm != null) {
            isScreenOn = pm.isScreenOn();
        }

        if (!isScreenOn) {
            if (mServ != null) {
                mServ.pauseMusic();
            }
        }

    }


}

Третье занятие:

public class FirstPage extends AppCompatActivity {

    ImageView dost1;
    ImageView dost2;
    ImageView dost3;
    ImageView dost4;





    Uri   imageUri1;
    Uri   imageUri2;
    Uri   imageUri3;
    Uri   imageUri4;






    HomeWatcher mHomeWatcher;



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



        dost1=findViewById(R.id.imglove1x);
        dost2=findViewById(R.id.imglove2x);
        dost3=findViewById(R.id.imglove3x);
        dost4=findViewById(R.id.imglove4x);




        doBindService();
        Intent music = new Intent();
        music.setClass(this, MusicService.class);
        startService(music);

        mHomeWatcher = new HomeWatcher(this);
        mHomeWatcher.setOnHomePressedListener(new HomeWatcher.OnHomePressedListener() {
            @Override
            public void onHomePressed() {
                if (mServ != null) {
                    mServ.pauseMusic();
                }
            }
            @Override
            public void onHomeLongPressed() {
                if (mServ != null) {
                    mServ.pauseMusic();
                }
            }
        });
        mHomeWatcher.startWatch();




//       imageView=findViewById(R.id.imager);
////       imageView2=(ImageView)findViewById(R.id.imager2);
////       imageView3=(ImageView)findViewById(R.id.imager3);
////       imageView4=(ImageView)findViewById(R.id.imager4);
////       imageView5=(ImageView)findViewById(R.id.imager5);
//        txtYou = findViewById(R.id.nameYou);
//        btnaccept = findViewById(R.id.accept2);
//        final MediaPlayer mp = MediaPlayer.create(getApplicationContext(),R.raw.pssound);
//
//        Intent i = getIntent();
//        String xr=i.getStringExtra("you");
//        String xr2=i.getStringExtra("you2");
//        String xr3=i.getStringExtra("you3");
//        String xr4=i.getStringExtra("you4");
//        String xr5=i.getStringExtra("you5");
//
//        btnaccept.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//
//                Intent intent = new Intent(FirstPage.this,SecondPage.class);
//                startActivity(intent);
//
//                mp.start();
//
//
//
//
//            }
//        });
//




        Bundle bundle=getIntent().getExtras();
        String string1=bundle.getString("imageUri");
        String string2=bundle.getString("imageUri2");
        String string3=bundle.getString("imageUri3");
        String string4=bundle.getString("imageUri4");


        imageUri1  = Uri.parse(string1);
        imageUri2 = Uri.parse(string2);
        imageUri3 = Uri.parse(string3);
        imageUri4 = Uri.parse(string4);

        final String stringrw ;


        stringrw=imageUri1.toString();


        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(getApplicationContext(),stringrw,Toast.LENGTH_LONG).show();


            }
        },2000);





            dost1.setImageURI(imageUri1);
            dost2.setImageURI(imageUri2);
            dost3.setImageURI(imageUri3);
            dost4.setImageURI(imageUri4);













        Random rand = new Random();
        int x = rand.nextInt(20);
        if (x==0){





        }else if (x==1){




        }else if (x==2){




        }else if (x==3){




        }else if (x==4){

        }else if (x==5){


        }else if (x==6){



        }else if (x==7){



        }else if (x==8){


        }else if (x==9){



        }else if (x==10){



        }else if (x==11){



        }else if (x==12){



        }else if (x==13){


        }else if (x==14){


        }else if (x==15){



        }else if (x==16){



        }else if (x==17){



        }else if (x==18){



        }else if (x==19){





        }




//

    }




    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==RESULT_OK) {
            Uri selectedfile = imageUri2;
            //The uri with the location of the file
            dost2.setImageURI(selectedfile);
        }
    }








                private boolean mIsBound = false;
    private MusicService mServ;
    private ServiceConnection Scon =new ServiceConnection() {


        @Override
        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
            mServ = ((MusicService.ServiceBinder) iBinder).getService();

        }

        @Override
        public void onServiceDisconnected(ComponentName componentName) {

            mServ = null;
        }};

    void doBindService() {
        bindService(new Intent(this, MusicService.class),
                Scon, Context.BIND_AUTO_CREATE);
        mIsBound = true;
    }

    void doUnbindService() {
        if (mIsBound) {
            unbindService(Scon);
            mIsBound = false;
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();

        doUnbindService();
        Intent music = new Intent();
        music.setClass(this,MusicService.class);
        stopService(music);

    }

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

        if (mServ != null) {
            mServ.resumeMusic();
        }

    }
    @Override
    protected void onPause() {
        super.onPause();

        PowerManager pm = (PowerManager)
                getSystemService(Context.POWER_SERVICE);
        boolean isScreenOn = false;
        if (pm != null) {
            isScreenOn = pm.isScreenOn();
        }

        if (!isScreenOn) {
            if (mServ != null) {
                mServ.pauseMusic();
            }
        }

    }


}
...