相关疑难解决方法(0)

如何在Android上管理startActivityForResult?

在我的活动中,我正在通过主要活动调用第二个活动startActivityForResult.在我的第二个活动中,有一些方法可以完成此活动(可能没有结果),但是,只有其中一个返回结果.

例如,从主要活动我称之为第二个.在这项活动中,我正在检查手机的某些功能,例如是否有相机.如果它没有,那么我将关闭此活动.此外,在准备期间MediaRecorderMediaPlayer如果出现问题,我将关闭此活动.

如果其设备有摄像头并完全录制,则在用户点击完成按钮后录制视频后,我会将结果(录制视频的地址)发送回主要活动.

如何检查主要活动的结果?

android android-intent android-activity startactivityforresult

935
推荐指数
9
解决办法
66万
查看次数

我们可以从适配器调用startActivityForResult吗?

是否可以onActivityResumeadapter&呼叫中使用方法startActivityForResult

android adapter

35
推荐指数
2
解决办法
3万
查看次数

如何从onResume()中的bundle中拉出字符串?

我有一个用户选择联系人后恢复的活动.现在,在用户选择一个联系人onSavedInstanceState之前,我会在Bundle中输入一个字符串.现在,在用户选择联系人并返回结果之后.onRestoreInstanceState没有被调用.只调用onResume().那么,一旦活动恢复,我将如何将我的字符串拉回包中?

android

6
推荐指数
1
解决办法
5125
查看次数

onActivityResult未被调用

第一个Activity(EditCycle)调用第二个活动(EditChooseLists)

Intent i=new Intent(EditCycle.this,EditChooseLists.class);
startActivityForResult(i, RESULT_OK);
Run Code Online (Sandbox Code Playgroud)

第二个活动(EditChooseLists)就这样结束了

Toast.makeText(EditChooseLists.this, list.get(position), Toast.LENGTH_SHORT).show();            
Intent i=new Intent();
i.putExtra("desc",content);
i.putExtra("content", list.get(position));
setResult(RESULT_OK,i);
finish();
Run Code Online (Sandbox Code Playgroud)

第一个Activity(EditCycle)将onActivityResult方法重写为this

@Override
public void onActivityResult(int requestCode,int resultCode,Intent data){
    super.onActivityResult(requestCode, resultCode, data);
    System.out.print("Test Result !");

    String content=data.getExtras().getString("content");
    System.out.println("result String"+content);
    Toast.makeText(EditCycle.this,content, Toast.LENGTH_SHORT).show();
    TextView t=(TextView)findViewById(R.id.tv_editcycle_cropLbl);
    t.setText(content);
}
Run Code Online (Sandbox Code Playgroud)

然而,当第二个活动恢复时没有任何反应,控制台中没有任何东西,没有吐司,文本视图不变

我的结论是onActivityResult然后没有被调用

有人可以帮忙吗?

android android-intent android-activity onactivityresult

6
推荐指数
1
解决办法
3852
查看次数

Android onActivityResult从不打电话

永远不会调用我的onActivityResult方法.我正在使用android 2.2

我正在使用Tabhost,其中TabHosts包含包含单个活动的TabGroup.

我的一项个人活动运行以下意图

 Intent intent = new Intent(); 
 intent.setType("image/*");
 intent.setAction(Intent.ACTION_GET_CONTENT);
 startActivityForResult(Intent.createChooser(intent,
                    "Select Picture"), 0);
Run Code Online (Sandbox Code Playgroud)

这加载我的画廊应用程序,我使用默认的Android库选择一个图像,当我返回我的onActivityResult时,不称为我的活动.

它看起来像这样 - 我给了一个断点if(resultCode == 0),所以现在,我的onActivityResult的逻辑应该不重要

 public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == 0) {
        if (requestCode == 0) {
            Uri selectedImageUri = data.getData();

            //OI FILE Manager
            filemanagerstring = selectedImageUri.getPath();

            //MEDIA GALLERY
            selectedImagePath = getPath(selectedImageUri);

            //DEBUG PURPOSE - you can delete this if you want
            if(selectedImagePath!=null)
                System.out.println(selectedImagePath);
            else System.out.println("selectedImagePath is null");
            if(filemanagerstring!=null)
                System.out.println(filemanagerstring);
            else System.out.println("filemanagerstring is null");

            //NOW …
Run Code Online (Sandbox Code Playgroud)

lifecycle android gallery android-intent android-tabhost

2
推荐指数
2
解决办法
3万
查看次数

单击操作栏"向上按钮"时未调用onActivityResult()

我正在尝试使用startActivityForResult(),我需要从片段开始一个活动,然后在原始活动中处理结果而不是启动它的片段(当按下后面时).任何人都可以告诉我这是可能的还是我的问题是什么?

Activity_A托管Fragment_A,该片段可以启动Activity_B.

Fragment_A:

   Intent intent = new Intent(mContext, Activity_B.class);
   intent.putExtra(EXTRA_CHOSEN_BUSINESS, mChosenBusiness);
   intent.putExtra(EXTRA_CHOSEN_POSITION, position);
   getActivity().startActivityForResult(intent, 1);
Run Code Online (Sandbox Code Playgroud)

Activity_B:

@Override
public void onBackPressed() {
    Intent intent = new Intent();
    intent.putExtra("myBoolean", wasUsingMap);
    setResult(RESULT_OK, intent);
    finish();
    super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)

Activity_A:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1) {
        if(resultCode == RESULT_OK){
            mWasUsingMap = data.getBooleanExtra("myBoolean", false);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这种情况下的数据始终为空.

为了进行测试,我尝试不使用getActivity().startActivityForResult(intent, 1);并简单地使用startActivityForResult(intent, 1);并将onActivityResult置于片段中(在此答案之后的活动中调用super onActivityResult )但数据仍为null.尽管如此,我仍然需要在托管活动中使用它.我也在这里尝试了最佳答案,但仍然难倒......

(作为旁注,布尔值用于检测用户按下时应显示哪个片段).

android-intent android-fragments onactivityresult

1
推荐指数
1
解决办法
2003
查看次数