my original code is provide as below:
public class ProfileActivity extends AppCompatActivity {
ImageView imageView;
private static final int PICK_IMAGE = 100;
Uri imageUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
final ImageView exampleImage = (ImageView) this.findViewById(R.id.exampleImageView);
exampleImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// [TODO] Implement application behavior when the user clicks the profile picture
//Toast.makeText(ProfileActivity.this, "Button Clicked", Toast.LENGTH_SHORT).show();
GalleryActivity();
}
});
}
private void GalleryActivity(){
Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(gallery, PICK_IMAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK && requestCode == PICK_IMAGE) {
imageUri = data.getData();
imageView.setImageURI(imageUri);
}
}
.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... I want to move the GallertyActivity to another separate class. I did it by copying some parts to the new class. but it show some error, what did I do wrong?
import android.content.Intent;
import android.net.Uri;
import android.provider.MediaStore;
import android.widget.ImageView;
public class GalleryActivity {
ImageView imageView;
private static final int PICK_IMAGE = 100;
Uri imageUri;
private void GalleryActivity(){
Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(gallery, PICK_IMAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK && requestCode == PICK_IMAGE) {
imageUri = data.getData();
imageView.setImageURI(imageUri);
}
}
}
error message:
error: cannot find symbol
startActivityForResult(gallery, PICK_IMAGE);
^
symbol: method startActivityForResult(Intent,int)
location: class GalleryActivity
CodePudding user response:
I see a few problems here
the
GalleryActivityclass does not extendAppCompatActivity(or any other class)the
GalleryActivityfunction should a) start with a lowercase letter and b) belongs in theProfileActivityclassthe onActivityResult callback also belongs in the
ProfileActivityclass
These points are based on assumptions I've made about your intentions given the info you've provided
CodePudding user response:
You need to extend GalleryActivity from AppCompatActivity like that: public class GalleryActivity extends AppCompatActivity.
Because startActivityForResult comes from Activity class.
Or pass instance of ProfileActivity as a parameter to the new class and call startActivityForResult from its instance: profileActivity.startActivityForResult()
