相关疑难解决方法(0)

片段中没有调用onActivityResult

托管此片段的活动onActivityResult在相机活动返回时调用.

我的片段开始一个结果的活动,其意图是发送给相机拍照.图片应用程序加载正常,拍照并返回.该onActivityResult然而,永远不会打.我设置了断点,但没有触发任何东西.一个片段可以onActivityResult吗?我想是因为它是一个提供的功能.为什么不被触发?

ImageView myImage = (ImageView)inflatedView.findViewById(R.id.image);
myImage.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(cameraIntent, 1888);
    }
});

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if( requestCode == 1888 ) {
        Bitmap photo = (Bitmap) data.getExtras().get("data");
        ((ImageView)inflatedView.findViewById(R.id.image)).setImageBitmap(photo);
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-activity

834
推荐指数
19
解决办法
37万
查看次数

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万
查看次数

getActivity().startActivityForResult()不能处理片段

我在Fragment中工作,我需要从库中选择一个图像并将其设置为imageView但getActivity().startActivityForResult()现在正在工作

我已经检查了很多链接但是所有人都说在父活动中调用这个方法,但我没有任何父活动,因为这个片段在另一个片段内.我也检查了这个链接

startActivityForResult在Fragment中不起作用

这是我的代码: -

MainActivity类: -

public class SabaKuchHomeActivity extends FragmentActivity {

private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;

// nav drawer title
private CharSequence mDrawerTitle;

// used to store app title
private CharSequence mTitle;

// slide menu items
private String[] navMenuTitles;
private TypedArray navMenuIcons;

private ArrayList<NavDrawerItem> navDrawerItems=new ArrayList<NavDrawerItem>();
private NavDrawerListAdapter adapter;

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.home_activity);
    mTitle = mDrawerTitle = getTitle();


    // load slide menu items …
Run Code Online (Sandbox Code Playgroud)

android imageview android-fragments

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

从图库中选择不在Android中的Fragment Class中工作的图像

从Fragment Class中的Gallery中选择Image不起作用.

我尝试了更多的堆栈代码.

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), GALLERY_INTENT_CALLED);
} else {
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    intent.setType("image/*");
    startActivityForResult(intent, GALLERY_KITKAT_INTENT_CALLED);
}

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

以上代码适用于Activity Class.不适用于Pure Fragment Class.

android fragment android-gallery android-dialogfragment

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

当嵌套片段使用替换而不是使用 Don't Keep Activity 添加时,不会调用 OnActivityResult

我在下面创建了一个简单的应用程序

MainActivity -> ContainerFragment -> MainFragment

ContainerFragment 使用 replace提交 MainFragment。

我打开不保持活动`

当 MainFragment 调用startActivityForResult并从活动返回时,onActivityResult不会调用 。

这不会发生

  • 它是单个 Fragment。(不嵌套)
  • Don't Keep Activity 已关闭
  • 当 ContainerFragment 用于add提交 MainFragment 时。

要复制该问题,请下载以下 github 中的代码并运行它。(记得开启Don't Keep Activity)。单击Start Activity..,然后单击End Activity并期待 Toast(没有 Toast,表示onActivityResultfragment中的没有被调用)

https://github.com/elye/issue_android_onactivityresult_not_call

显然之前有一个报告的嵌套片段无法onActivityResult过去,如/sf/answers/2536760551/ 中发布的那样,但声明已在 Android 支持库 23.2.1 中解决。但就我而言,我尝试了 Android Support Library 28 (Android Pie)。所以我相信这仍然是一个有效的问题。

如果我错了,请在此处分享,并且对此有一些解释。

万一解决方法,https://inthecheesefactory.com/blog/how-to-fix-nested-fragment-onactivityresult-issue/en 中推荐了一个。

/sf/answers/1438027181/ 中报告的另一种解决方法

android android-fragments

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