OnActivityResult不是工作在TabActivityGroup? [英] OnActivityResult is not working in TabActivityGroup?
问题描述
我使用的选项卡的活动中,它有4个选项卡的主要活动。一个选项卡是活动组有三个按钮。每个按钮是一个活动。我使用的相机在这些活动之一。我知道它的工作,因为我在存储卡中的图像被保存已经检查了,但它并没有调用Onactivityresult()方法。
I am using Tab Activity as a main Activity in which it has 4 tabs. One tab is Activity Group which has three buttons. Each button is one activity. I am using camera in one of those activity. I know its working because i have checked in the memory card the image get saved, but it doesn't calling the Onactivityresult() method.
这是显示内容查看
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.enter_expenses, null);
this.setContentView(viewToLoad);
这code是用来取图片
This code is used to take the image
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);
这是onactivity结果
This is onactivity result
@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;
}
}
感谢您的帮助球员
Thanks for your help guys
推荐答案
我已经解决了我的issue.Please看到我的回答如下,
I have solved my issue.Please see my answer below,
我终于想通了/还记得,这个问题是因为Android将只允许子活动嵌套层...即子活动不能嵌套子activitites。要解决这个问题:
I finally figured out/remembered that the issue is because Android will only allow a nested layer of sub-activities...ie sub-activities can't nest sub-activitites. To solve this:
呼叫的getParent()。startActivityForResult()
从子活动
你的父母(在的ActivityGroup)将能够处理onActivityResult。因此,我创建的ActivityGroup的子类,这样处理onActivityResult。
您可以重新路由结果返回给子活动,如果你需要。刚刚获得由当前活动getLocalActivityManager()。getCurrentActivity()
。我的子活动从一个自定义活动继承,所以我增加了一个 handleActivityResult(要求code,因此code,数据)
在子类中的ActivityGroup打电话
call getParent().startActivityForResult()
from your sub-activity
your parent (the activitygroup) will be able to handle the onActivityResult. So I created a subclass of ActivityGroup and handled this onActivityResult.
You can re-route that result back to the sub-activity if you need to. Just get the current activity by getLocalActivityManager().getCurrentActivity()
. My sub-activities inherit from a custom activity so I added a handleActivityResult(requestCode, resultCode, data)
in that subclass for the ActivityGroup to call.
答与精确code中的上述问题
Answer for the above question with exact code
ActivityGroup->SubActivities->onActivityResult->ActivityGroup(onActivityResult)->subActivity(onActivityResult)
这是的ActivityGroup类中,你必须定义onActivityResult所有的子活动,
This is the ActivityGroup Class in which you have to define onActivityResult for all sub-activities,
@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);
}
}
在小组活动中,你必须设置看法如下
In Sub Activity, you have to set the view as below
View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.enter_time, null);
this.setContentView(viewToLoad);
然后在子活动onActivityResulty()
Then in Sub- Activity onActivityResulty()
@Override
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
//Some Code
}
这篇关于OnActivityResult不是工作在TabActivityGroup?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!