Android OnActivityResult在TabActivityGroup中不工作?
我使用Tab活动作为主要活动,其中有4个选项卡。一个选项卡是活动组,它有三个按钮。每个按钮都是一个活动。我正在其中一个活动中使用相机。我知道它可以工作,因为我已经在存储卡中签入了保存的图像,但是它没有调用Onactivityresult()方法 这是为了显示ContentViewAndroid OnActivityResult在TabActivityGroup中不工作?,android,android-activity,android-camera,android-tabhost,tabactivity,Android,Android Activity,Android Camera,Android Tabhost,Tabactivity,我使用Tab活动作为主要活动,其中有4个选项卡。一个选项卡是活动组,它有三个按钮。每个按钮都是一个活动。我正在其中一个活动中使用相机。我知道它可以工作,因为我已经在存储卡中签入了保存的图像,但是它没有调用Onactivityresult()方法 这是为了显示ContentView public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View viewTo
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.enter_expenses, null);
this.setContentView(viewToLoad);
此代码用于拍摄图像
dbimgguid = UUID.randomUUID();
imagename =dbimgguid.toString();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
photo = new File(Environment.getExternalStorageDirectory(), "Expenses"+imagename+".jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(photo));
imageurl = Uri.fromFile(photo);
startActivityForResult(intent, CAMERA_RECEIPTREQUEST);
这是一个不活跃的结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
System.out.println(requestCode);
System.out.println(resultCode);
switch(requestCode)
{
case CAMERA_RECEIPTREQUEST:
if(resultCode== Activity.RESULT_OK)
{
//Toast.makeText(this, "Receipt Image Saved", Toast.LENGTH_SHORT).show();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
//ImageView jpgView = (ImageView)findViewById(R.id.imageView1);
Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);
String image = "Expenses"+imagename+".jpg";
Intent imagepass = new Intent(ExpensesActivity.this,ReviewReceiptImage.class);
imagepass.putExtra("receipt", receipt);
imagepass.putExtra("imagename", image);
startActivityForResult(imagepass, CAMERA_CONFIRMRECEIPT);
Toast.makeText(this, "Receipt Image Saved", Toast.LENGTH_SHORT).show();
}
case CAMERA_CONFIRMRECEIPT:
Toast.makeText(this, "Receipt Image Saved", Toast.LENGTH_SHORT).show();
if(resultCode == CAMERA_CONFIRMRECEIPT)
{
take_receipt.setEnabled(false);
take_receipt.setVisibility(View.GONE);
show_receipt.setEnabled(true);
show_receipt.setVisibility(View.VISIBLE);
}
break;
}
}
谢谢你们的帮助,伙计们。我已经解决了我的问题。请看下面我的答案 我终于明白/记住,问题在于Android只允许嵌套一层子活动……即子活动不能嵌套子活动。要解决这个问题: 从子活动调用
getParent().startActivityForResult()
您的家长(activitygroup)将能够处理onActivityResult。所以我创建了ActivityGroup的一个子类,并在ActivityResult上处理了这个问题。
如果需要,可以将该结果重新路由回子活动。只需通过getLocalActivityManager().getCurrentActivity()
获取当前活动。我的子活动继承自自定义活动,因此我在该子类中添加了一个handleActivityResult(requestCode、resultCode、data)
,以便ActivityGroup调用
用准确的代码回答上述问题
ActivityGroup->SubActivities->onActivityResult->ActivityGroup(onActivityResult)->subActivity(onActivityResult)
这是ActivityGroup类,您必须在其中为所有子活动定义onActivityResult
@Override
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
switch(requestCode)
{
case CAMERA_RECEIPTREQUEST:
if(resultCode == Activity.RESULT_OK)
{
ExpensesActivity activity = (ExpensesActivity) getLocalActivityManager().getCurrentActivity();
activity.onActivityResult(requestCode, resultCode, data);
}
break;
case CAMERA_CONFIRMRECEIPT:
ExpensesActivity activity1 = (ExpensesActivity) getLocalActivityManager().getCurrentActivity();
activity1.onActivityResult(requestCode, resultCode, data);
}
}
在“子活动”中,必须按如下所示设置视图
View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.enter_time, null);
this.setContentView(viewToLoad);
然后在子活动onActivityResulty()中
TabActivity
已被弃用,取而代之的是Fragments
w/兼容包。如果您使用的是TabGroupActivity,那么您应该覆盖handleActivityResult()方法,而不是覆盖onActivityResult()方法。我不太明白您在回答中到底说了什么。你能详细解释一下吗?我已经编辑了上面的答案。。我希望这会有帮助。。如果您有任何问题,请让我知道..Tnx是解决方案,但我的问题有另一个解决方案。@Vino先生,您能详细说明一下吗?因为我认为我的问题与您的问题相同
@Override
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
//Some Code
}