Here is my code hierarchy:
Activity1 ->> ROOT ACTIVITY
Fragment1 ->> inside Activity1
Viewpager ->> inside Fragment1
Fragment2 ->> hold by viewpager
now i want to select a picture from system gallary, so i use startActivityForResult() in Fragment2,but the onActivityResult() can never be called in Fragment2. here is my code in fragment2
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
btnlocalpic.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
OFNFragment.this.startActivityForResult(intent, 1);
}
});
btntakepic_ofn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
OFNFragment.this.startActivityForResult(intent, 2);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Log.d("yancey", "onActivityResult level3");
Log.i("yancey", "requestCode is: " + requestCode);
switch (requestCode) {
case 1:
Log.i("yancey", "uri is: " + data.getData());
Uri uri = data.getData();
ContentResolver resolver = getActivity().getContentResolver();
try {
Bitmap bitmap = BitmapFactory.decodeStream(resolver.openInputStream(uri));
Intent intent = new Intent(getActivity(), PiceditActivity.class);
intent.putExtra("bitmap", bitmap);
getActivity().startActivity(intent);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
break;
case 2:
if(resultCode == Activity.RESULT_OK){
String sdStatus = Environment.getExternalStorageState();
if(!sdStatus.equals(Environment.MEDIA_MOUNTED)){
Log.i("TestFile", "SD card is not avaiable/writeable right now.");
return;
}
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap)bundle.get("data");
Intent intent = new Intent(getActivity(), PiceditActivity.class);
intent.putExtra("bitmap", bitmap);
startActivity(intent);
}
break;
}
}
hope you guys anderstand me, help me please!!