标签: onactivityresult

onActivityResult不在Fragment中调用

应用程序的结构如下:

tabHost (in Activity) -> contains -> TabFragment(extend base container fragment)
Run Code Online (Sandbox Code Playgroud)

1.活动中的代码:

tabHost.addTab(
                tabHost.newTabSpec("home").setIndicator("",
                        getResources().getDrawable(R.drawable.btn_home)),
                HomeFragment.class, null);
Run Code Online (Sandbox Code Playgroud)

2. HomeFragment中的代码 (注意HomeFragment不是实际的函数,而是像这样的容器,它扩展了BaseContainerFragment):

public class HomeFragment extends BaseContainerFragment {

    public Home homeFrag;
    private boolean mIsViewInited;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.container_fragment, null);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        if (!mIsViewInited) {
            mIsViewInited = true;
            initView();
        }
    }

    private void initView() {
        homeFrag = new Home();
        replaceFragment(homeFrag, false);
    }

}
Run Code Online (Sandbox Code Playgroud)

3. BaseContainerFragment

public class BaseContainerFragment …
Run Code Online (Sandbox Code Playgroud)

android android-tabhost android-fragments android-activity onactivityresult

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

resultCode始终为0,请求始终为-1.Activity.onActivityResult();

我想将此添加到另一个关于resultCode == 0和的问题列表中requestCode == 0.

这是概要: 使用NoteActivity调用.NoteSettingsActivitystartActivityForResult()

我在网上搜索过,当我按下按钮的时候super.onBackPressed(),resultCode == 0.好后进一步研究,似乎它返回代码每次按下后退按钮,但拙劣地修补,经过super.onBackPressed()电话,只是简单finish()的应用onActivityResult()resultCode仍是等于0.它跟相同requestCode.

此外,我尝试操作清单文件,我做了很多更改只是为了让这项工作,但nothings对我有用.

这是片段.请注意,我已经恢复到我之前的提交,所以我已经失去了我最近的修改,但请注意我写的代码之前我注意到它resultCode总是等于0(ACTIVITY_CANCELED)

@Override
public void onNoteSettingsActivityCalled(Note note)
{
    Intent intent = new Intent(this, NoteSettingsActivity.class);
    intent.putExtra(NoteExtrasKey.EXTRA_NOTE_ID, note.getNoteID());

    startActivityForResult(intent, NoteRequest.REQUEST_UPDATE_SETTINGS);
}
Run Code Online (Sandbox Code Playgroud)

这是检测到活动的时间:

@Override
public void onBackPressed()
{   
    Log.i(NoteApplication.TAG, "NoteSettingsActivity.onBackPressed() has been called.");

    Intent intent = new Intent();
    intent.putExtra(NoteExtrasKey.EXTRA_NOTE_REMINDENABLED , mRemindEnabled);
    intent.putExtra(NoteExtrasKey.EXTRA_NOTE_REMINDEVERY   , mDaysSelected);
    intent.putExtra(NoteExtrasKey.EXTRA_NOTE_REMINDON      , String.valueOf(mRemindDateTime)); …
Run Code Online (Sandbox Code Playgroud)

android start-activity onactivityresult

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

onActivityResult返回图像捕获的空数据

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    filePath = getOutputMediaFile(FileColumns.MEDIA_TYPE_IMAGE);
    File file = new File(filePath);
    Uri output = Uri.fromFile(file);
    Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    i.putExtra(MediaStore.EXTRA_OUTPUT, output);
    startActivityForResult(i, RETURN_FILE_PATH);
}

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    //data is always null here.
    //requestCode = RETURN_FILE_PATH;
    //resultCode = Activity.RESULT_OK;
}
Run Code Online (Sandbox Code Playgroud)

我检查了文件输出Uri的值,两者都很好,捕获的图像实际上存在于该位置.

但是,在捕获图像后,返回的数据onActivityResult总是存在null.

编辑:

我查了这个问题:

onActivityResult返回data = null

其中说:

每当通过传递具有相机意图的EXTRAOUTPUT来保存图像时,onActivityResult内的数据参数始终返回null.因此,不使用数据来检索图像,而是使用文件路径来检索位图.

也许这个解决方案对我有用.但是我的上述代码到目前为止是一个工作代码.

android onactivityresult

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

ACTION_INSTALL_PACKAGE

我的应用正在尝试安装APK.

Intent installIntent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
installIntent.setData(Uri.fromFile(new File(pathToApk)));
installIntent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);
installIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
((Activity)context).startActivityForResult(installIntent, Constants.APP_INSTALL_REQUEST);
Run Code Online (Sandbox Code Playgroud)

在我的活动中

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case Constants.APP_INSTALL_REQUEST:
            if(resultCode == RESULT_OK){
                Log.e(TAG, "Package Installation Success");
            }else if(resultCode == RESULT_FIRST_USER){
                Log.e(TAG, "Package Installation Cancelled by USER");
            }else{
                Log.e(TAG, "Something went wrong - INSTALLATION FAILED");
            }
Run Code Online (Sandbox Code Playgroud)

当我的startActivityResult被触发时,我的活动会立即获得结果代码0,该代码对应于RESULT_CANCELLED,而系统安装UI仍在等待用户权限.

在此输入图像描述

我的活动是实际了解安装是否成功,并基于该更新其UI.

任何帮助都值得赞赏.

android android-intent android-ui start-activity onactivityresult

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

Android:我们什么时候使用getIntent()?

我不明白为什么我们使用方法getIntent().

因为,当我们需要那个方法时,我们可以使用方法onActivityResult().

但是通过使用方法getIntent(),它可能会导致NullPointerException.

任何人都可以解释我(android新手)?

android android-intent onactivityresult

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

未调用onActivityResult方法

我在Android应用程序中遇到问题.我不知道为什么在按下操作栏的"向上导航"按钮时没有调用'onActivityResult'方法.我想我已经做好了一切:

  • 父活动使用'startActivityForResult'方法启动子活动.

    Intent intent = new Intent(ParentActivity.this, ChildActivity.class);
    startActivityForResult(intent, 1000);
    
    Run Code Online (Sandbox Code Playgroud)

  • 父活动已覆盖'onActivityResult'方法.

    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
       super.onActivityResult(requestCode, resultCode, data);   
       if (data != null && requestCode == 1000)
       {
            Bundle extras = data.getExtras();
            Boolean rc = extras.getBoolean(MyConstants.INTENT_EXTRA_RESULT);
            if (rc)
            {
                .......
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

  • 子活动已覆盖'onOptionsItemSelected'并调用'NavUtils.navigateUpFromSameTask'.

    public boolean onOptionsItemSelected(MenuItem item)
      {
        if (item.getItemId() == android.R.id.home)
        {
            Intent result = new Intent((String)null);
            result.putExtra(MyConstants.INTENT_EXTRA_RESULT, true);
            setResult(RESULT_OK, result);
            NavUtils.navigateUpFromSameTask(this);          
            return true;
        }           
        else
        {
            return super.onOptionsItemSelected(item);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

  • 子活动已覆盖'完成'方法.此方法设置结果.

    public void …
    Run Code Online (Sandbox Code Playgroud)
  • android onactivityresult

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

    android - 对多个活动使用相同的片段

    我想在多个活动中使用一个片段。在我将在第一个活动中使用它,我创建了它

        final ScoreBoard fragment = new ScoreBoard();
        getFragmentManager()
                .beginTransaction()
                .add(R.id.fragment_container, fragment)
                .commit();
    
    Run Code Online (Sandbox Code Playgroud)

    在第二个活动中,我在 onCreate() 方法中放置了相同的代码。但是,即使我已经通过 onSavedInstanceState() 和 onActivityCreated() 保存了它们,片段也会不断重置并且不会将其值保留在第二个活动中。我是在重新创建片段并重置它吗?谢谢你。

    android-fragments android-activity android-fragmentactivity onactivityresult onsaveinstancestate

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

    AppCompatActivity 中的 Android Activity Results API 未解析引用

    我正在尝试使用新的 Activity Results API 来替换 startActivityForResult。如果我在 Fragment 中调用 registerForActivityResult 一切正常。但是,如果我在 AppCompatActivity 中调用相同的方法,IDE 会显示“未解析的引用”错误。无论如何,应用程序构建时没有错误并按预期运行。如何删除 IDE 中的“未解析引用”错误?

    我使用: import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity

    依赖项:“androidx.activity:activity-ktx:${versions.activity_ktx}”“androidx.fragment:fragment-ktx:${versions.fragment_ktx}”

    android onactivityresult

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

    androidx 中已弃用的 OnActivityResult()

    OnActivityResult()在 androidx 中已弃用。我参考了以下链接 https://developer.android.com/training/basics/intents/result https://developer.android.com/jetpack/androidx/releases/activity https://proandroiddev.com/is- onactivityresult-deprecated-in-activity-results-api-lets-deep-dive-into-it-302d5cf6edd 我在我的项目中实现了注册事情..like .我通过注册活动来创建 resultcontract 代替startActivityForResult i 替换 resultcontract.launch(intent)并获得结果resultcontract (按照上面的链接)。现在我怀疑打开 gps 的功能。为此,我们使用了

     val rae = e as ResolvableApiException
        rae.startResolutionForResult(context, GPS_REQUEST)
    
    Run Code Online (Sandbox Code Playgroud)

    早些时候 startActivityForResult,现在 startResolutionForResult 对如何获得 gps 请求的结果感到困惑(在代码中,我们在 onActivityResult 中获得结果)。我该如何使用新方法实现这一点?

    android deprecated onactivityresult startactivityforresult androidx

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

    不推荐使用 AppCompatActivity 的 onActivityResult()

    我正在为 android使用应用程序内更新,并且根据文档,他们使用 onActivityResult 来处理应用程序行为,以防更新中断。

    这是从我的片段调用的我的函数:

    private fun startImmediateUpdate(appUpdateInfo: AppUpdateInfo) {
        appUpdateManager.startUpdateFlowForResult(
            appUpdateInfo,
            AppUpdateType.IMMEDIATE,
            requireActivity(),
            Constants.CODES.APP_UPDATE_REQUEST_CODE
        )
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

    这就是我处理父活动结果的方式

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        when (requestCode) {
            Constants.CODES.APP_UPDATE_REQUEST_CODE -> {
                if (resultCode != RESULT_OK || resultCode == RESULT_CANCELED || resultCode == ActivityResult.RESULT_IN_APP_UPDATE_FAILED) {
                    //Do whatever i want to
                }
            }
        }
        super.onActivityResult(requestCode, resultCode, data)
    }
    
    Run Code Online (Sandbox Code Playgroud)

    现在 super.onActivityResult(requestCode, resultCode, data) 已弃用。目前一切正常,但我担心如果应用程序完全消失,应用程序会崩溃

    我可以做些什么来替换 onActivityResult()?我查看了 registerForActivityResult() 但找不到适合我的用例的任何内容。

    android kotlin onactivityresult

    6
    推荐指数
    2
    解决办法
    2933
    查看次数