我有一个从片段创建的用户对话框.用户可以做出选择,我希望将此选择传递给片段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) 我正在使用"使用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) 我在返回带有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) 我有一个应用程序需要扫描条形码才能获得代码才能继续.
我使用此代码开始扫描活动:
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) 我搜遍了所有关于它的类似帖子,但找不到解决方案!
我的情况是我有一个活动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)
onActivityResult从fragment成功调用,有权requestCode但resultCode总是0,意图总是null.
我onActivityResult在ActivityA 下没有其他实现.
其实,我也试着开始activity从fragment与
getActivity().startActivityForResult(mapIntent, …
我正在从对话框片段拍照.而且我也需要类似的东西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
从HomeActivity我试图从CreateProfileActivity获得结果。这是我如何开始活动
Intent createProfile = new Intent(this, CreatePreacherActivity.class);
startActivityForResult(createProfile, 1);
Run Code Online (Sandbox Code Playgroud)
这里是HomeActivity中onActivityResult方法的实现:
@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) 我的代码是:
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 格式)
我有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)'
有什么办法可以避免这种情况吗?或者是否可以在适配器类中使用此方法?如果不是我该怎么办?
我试图新 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)