Onactivityresult не работает в android studio
package com.example.xyz; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.github.barteksc.pdfviewer.PDFView; import java.io.InputStream; public class MainActivity extends AppCompatActivity { private static final int REQUEST_CODE_STORAGE_PERMISSION =1; private static final int PICKFILE_RESULT_CODE = 2; TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView); findViewById(R.id.button1).setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View arg0) { if (ContextCompat.checkSelfPermission( getApplicationContext(), Manifest.permission.READ_EXTERNAL_STORAGE ) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions( MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_CODE_STORAGE_PERMISSION ); } else { selectImage(); } } }); } public void onRequestPermissionResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults){ super.onRequestPermissionsResult(requestCode, permissions ,grantResults); if(requestCode == REQUEST_CODE_STORAGE_PERMISSION && grantResults.length > 0){ if(grantResults[0]== PackageManager.PERMISSION_GRANTED){ selectImage(); }else{ Toast.makeText(this, "Permission denied!", Toast.LENGTH_SHORT).show(); } } } private void selectImage() { Toast.makeText(this, "selectimage", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); textView.setText("this works"); startActivityForResult(intend,10); } protected void OnActivityResult(int requestCode, int resultCode, @Nullable Intent data){ switch(requestCode){ case 10: if(resultCode==RESULT_OK){ textView.setText("no this not"); } break; } } }
Что я уже пробовал:
Я написал приведенный выше код, чтобы выбрать файл и что-то сделать, но он не работает. В конце концов я использовал textview для проверки. Textview меняет текст везде, где ожидаете
OnActivityResultфункция.Может ли кто-нибудь помочь проверить, что я делаю не так?
David Crow
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); ... startActivityForResult(intend, 10);
Хотя, скорее всего, это не источник проблемы, разве они не должны совпадать?
Richard MacCutchan
Я думаю, что именно в этом источник проблемы. Намерение никогда не запускается, поэтому соответствующий обработчик никогда не вызывается. И то, что вы написали, - это решение.
David Crow
Но он не должен был компилироваться, не говоря уже о запуске.
Richard MacCutchan
Неясно, удалось ли плакату на самом деле создать чистую сборку. И поэтому многие не знают разницы между компиляцией, связыванием, выполнением.
David Crow
Я предположил, что его "В поле TextView меняется текст всюду ожидают метод onActivityResult" это означало совсем другое. Ну что ж. Это правда о знании разницы между компиляцией и выполнением.
Richard MacCutchan
Да, было бы неплохо, если бы Google выпустила приложение "make sense of this". :)
Vivek Kansal
спасибо за ваш ответ , сэр ,я перешел от намерения к намерению, но это мое плохое, что оно все еще не работает...