标签: onactivityresult

如何在片段中使用createPendingResult?

我有一个从片段创建的用户对话框.用户可以做出选择,我希望将此选择传递给片段onActivityResult.为此,我使用createPendingResult.此方法适用于活动,但对于我需要调用的片段getActivity().createPendingResult.这会导致结果传递给父活动而不是片段!从父活动调用片段的onActivityResult对我来说有点复杂onActivityResult.还有另外一种方法吗?

这是对话框的代码:

public static void selectChoice(final Context c, final PendingIntent callback) {
    (new AlertDialog.Builder(c))
         .setTitle(title)
         .setSingleChoiceItems(items, index, new DialogInterface.OnClickListener() {

         @Override
         public void onClick(DialogInterface dialog, int which) {
             try {
                 callback.send(c, STATUS_CHANGED, 
                               new Intent().putExtra(EXTRA_CHOICE, which));
             } catch (CanceledException e) {
                 e.printStackTrace();
             }                   
             dialog.dismiss();
         }
    }).show();
}
Run Code Online (Sandbox Code Playgroud)

这是我在片段中进行的调用:

selectChoice(getActivity(), getActivity().createPendingResult(
    REQUEST_DIALOG, new Intent(), PendingIntent.FLAG_UPDATE_CURRENT)
);
Run Code Online (Sandbox Code Playgroud)

这是在父活动中触发的,但不在片段中触发:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if ( requestCode == …
Run Code Online (Sandbox Code Playgroud)

android fragment onactivityresult

5
推荐指数
0
解决办法
533
查看次数

在startIntentSenderForResult之后没有调用OnActivityResult

我正在使用"使用Google登录"的启动页面.当用户拥有多个帐户时...在他们选择要登录的帐户后,我正在尝试启动应用程序主要活动,但由于某种原因onActivityResult,我的片段中从未调用过.

我是Activity,我调用onActivityResult并让它调用super以便片段可以处理它,但它永远不会触发.

有什么建议?

这是有问题的片段:

package com.garciaericn.goodeats.login;

import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.content.IntentSender;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.garciaericn.goodeats.R;
import com.garciaericn.goodeats.helpers.CheckConnection;
import com.garciaericn.goodeats.main.FavoritesActivity;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.plus.Plus;

public class LoginFragment extends Fragment implements View.OnClickListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

    public static final String TAG = "com.garciaericn.goodeats.login.LoginFragment.TAG";

    /* Request code used to invoke sign in user interactions. */
    private static final int RC_SIGN_IN = 0;
    private …
Run Code Online (Sandbox Code Playgroud)

android android-fragments onactivityresult

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

onActivityResult从Adapter传递Intent时,Intent为null

我在返回带有Result的Activity时面临一个奇怪的问题,我startActivityForResult从这样的适配器传递一个Intent :

Intent i = new Intent(activity, EditInfoActivity.class);
i.putExtra("id", list.get(position).getID());
activity.startActivityForResult(i, 100);
Run Code Online (Sandbox Code Playgroud)

在第二个Activity中,即在我的情况下在EditInfoActivity中Button单击,我为第一个活动设置Result,如下所示:

Intent i = getIntent();
i.putExtra("isDataChange", isDataChange);
setResult(100, i);
finish();
Run Code Online (Sandbox Code Playgroud)

在Activity的onActivityResult方法中,我能够得到结果代码但是得到了Intent null.

为什么?任何人对此有任何想法请分享.

在活动中:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == 100) {
    //Here data is null and app crash
    if (data.getExtras() != null && data.getBooleanExtra("isDataChange", false)) {
       recreate();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

android android-intent onactivityresult

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

在活动开始之前触发了Android onActivityResult!

我有一个应用程序需要扫描条形码才能获得代码才能继续.

我使用此代码开始扫描活动:

finish = (Button) findViewById(R.id.finishButton);
        finish.setOnClickListener(new OnClickListener() {
            public void onClick(View viewParam) {

                /*Prompt the user to scan the barcode */
                new AlertDialog.Builder(Visit.this)
                .setMessage("Please Scan the clients barcode to complete the visit")
                .setPositiveButton("Scan Barcode", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //Start the scan application
                        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                        startActivityForResult(intent, 0);
                    }
                })

                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //Execute some method call
                        Toast.makeText(Visit.this, "Scan declined...", Toast.LENGTH_SHORT).show();
                    } …
Run Code Online (Sandbox Code Playgroud)

android barcode-scanner android-activity onactivityresult

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

片段startActivityForResult始终在回调onActivityResult上返回resultCode 0和intent null

我搜遍了所有关于它的类似帖子,但找不到解决方案!

我的情况是我有一个活动A,它持有一个fragment,并且从那里fragment我想开始一个新的ActivityB应该返回一些值fragment.

fragment

startActivityForResult(mapIntent, ConstantsUtils.TOMAP_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)

ActivityB上,返回数据

Intent returnIntent = new Intent();
returnIntent.putExtra(SerializationConstants.isSearchSaved, mAbItemsShown.ordinal());
setResult (ConstantsUtils.SUCCESS_RETURN_CODE, returnIntent);
finish();
Run Code Online (Sandbox Code Playgroud)

在片段上

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);

switch (requestCode) {

    case ConstantsUtils.TOMAP_REQUEST_CODE:

            if (resultCode == ConstantsUtils.SUCCESS_RETURN_CODE) {
              //do some stuff 
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

onActivityResultfragment成功调用,有权requestCoderesultCode总是0,意图总是null.

onActivityResultActivityA 下没有其他实现.

其实,我也试着开始activityfragmentgetActivity().startActivityForResult(mapIntent, …

android android-intent android-fragments onactivityresult

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

对话框片段中的onActivityResult

我正在从对话框片段拍照.而且我也需要类似的东西startActivityForResult(takePictureIntent, actionCode);

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
        super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
        switch (requestCode) {
            case SELECT_PHOTO:
                getActivity();
                if (resultCode == Activity.RESULT_OK) {
                    Uri selectedImage = imageReturnedIntent.getData();
                    String[] filePathColumn = { MediaStore.Images.Media.DATA };
                    Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
                    cursor.moveToFirst();
                    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);

                    setPic();
                }
                break;
            case ACTION_TAKE_PHOTO_B: {
                getActivity();
                if (resultCode == Activity.RESULT_OK) {
                    handleBigCameraPhoto();

                }
                break;
            }
        }   
    }
Run Code Online (Sandbox Code Playgroud)

不要调用此方法.有没有这样的方法可以在对话框片段中使用?

android android-dialogfragment start-activity onactivityresult

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

onActivityResult 执行两次

HomeActivity我试图从CreateProfileActivity获得结果。这是我如何开始活动

Intent createProfile = new Intent(this, CreatePreacherActivity.class);
startActivityForResult(createProfile, 1);
Run Code Online (Sandbox Code Playgroud)

这里是HomeActivityonActivityResult方法的实现:

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


        if (requestCode == 1)
        {

            Log.d("DEV","HomeActivity is reciving data");
            if (resultCode == RESULT_OK)
            {

                // this code here execute at the second call
                // but why there are two calls when i just call setResult once???

                User user = new User();

                String[] userInfo = data.getStringArrayExtra("preacher");

                //parsing and saving and database code...

                Log.d("DEV","HomeActivity …
Run Code Online (Sandbox Code Playgroud)

android android-intent onactivityresult

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

如何从 onActivityResult 获取任何文件路径、名称、扩展名?

我的代码是:

1.

File file = new File(Environment.getExternalStorageDirectory(),"myFolder");

            Log.d("path", file.toString());

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setDataAndType(Uri.fromFile(file), "*/*");
        startActivityForResult(intent,0);
Run Code Online (Sandbox Code Playgroud)

2.

 @Override
    protected void onActivityResult(int requestCode, 
    int resultCode, Intent FileReturnedIntent) {
            // TODO Auto-generated method stub
            super.onActivityResult(requestCode, resultCode, FileReturnedIntent);
Run Code Online (Sandbox Code Playgroud)

如何获取文件路径、名称、扩展名?(假设文件为 doc、pdf、csv 格式)

android onactivityresult

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

适配器类中的super.onActivityResult?Android的

我有RecyclerView非常复杂的项目,多个按钮/图像/文本.要访问每个按钮/图像,我在Adapter类中设置了单击Listeners.

但现在我正在尝试添加功能来设置联系人铃声,我有一个问题.

我正在调用onActivityResult方法,如下所示:

Intent contactIntent = new Intent(Intent.ACTION_PICK);
                contactIntent.setType(ContactsContract.Contacts.CONTENT_TYPE);
                contactIntent.putExtra("RINGTONE_POSITION", position);
                ((Activity) context).startActivityForResult(contactIntent, CONTACT_CHOOSER_ACTIVITY_CODE );
Run Code Online (Sandbox Code Playgroud)

这很好.但问题出在这里:

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

        switch (requestCode) {
....
...
...
}
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:Cannot resolve method 'onActivityResult(int, int, android.content.Intent)' 有什么办法可以避免这种情况吗?或者是否可以在适配器类中使用此方法?如果不是我该怎么办?

android onactivityresult

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

registerForActivityResult TakePicture 未触发

我试图新 registerForActivityResult 拍照。我可以打开Camera Intent,但是拍照后,没有触发回调,我看不到有关活动结果的任何信息或logcat 上的错误。

我也试过RequestPermission,它被触发了。没找到,怎么回事

我的代码在这里:

class UploadDocumentFragment {

    private val registerTakePicture = registerForActivityResult(
        ActivityResultContracts.TakePicture()
    ) { isSuccess ->
        if (isSuccess) {
            viewModel.addDocToRequest()
            viewModel.setSelectedDocument(null)
        } else {
            R.string.internal_error.showAsDialog { }
        }
    }

    //...

    private fun takeImage() {
        val photoFile: File? = viewModel.createImageFile()
        photoFile?.also {
            val photoURI: Uri = FileProvider.getUriForFile(
                requireContext(),
                BuildConfig.APPLICATION_ID +".fileProvider",
                it
            )
            registerTakePicture.launch(photoURI)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ViewModel 上的 createImageFile 函数:

@Throws(IOException::class)
fun createImageFile(): File? {
    val imageFileName = selectedDocumentTypeLD.value?.visibleName
    return try {
        val file = File(storageDir, "$imageFileName.jpg") …
Run Code Online (Sandbox Code Playgroud)

android onactivityresult registerforactivityresult

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