簡體   English   中英

在Fragment中共享文件時,應用程序崩潰

[英]App crashes when file is shared in Fragment

我有一個附着在MainActivity上的片段。 它顯示圖像。 用戶必須共享圖像,但是單擊共享按鈕時應用程序崩潰。

這是片段代碼:

Context mcontext = getActivity();
case R.id.item_share: {

    final Uri uri = FileProvider.getUriForFile(mcontext, "com.whats.insta", file);

    final Intent intent = ShareCompat.IntentBuilder
            .from((Activity)mcontext)
            .setType("image/jpg")
            .setStream(uri)
            .createChooserIntent()
            .addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET)
            .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

    mcontext.startActivity(intent);*/

    break;
}

崩潰日志

09-05 10:41:05.410 26011-26011/com.whats.insta E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.whats.insta, PID: 26011
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.app.Activity.getPackageName()' on a null object reference
        at android.support.v4.app.ShareCompat$IntentBuilder.<init>(ShareCompat.java:216)
        at android.support.v4.app.ShareCompat$IntentBuilder.from(ShareCompat.java:210)
        at com.whats.insta.ui.imageslider.imagedetails.ImageDetailsFragment.onOptionsItemSelected(ImageDetailsFragment.java:267)
        at android.support.v4.app.Fragment.performOptionsItemSelected(Fragment.java:2476)
        at android.support.v4.app.FragmentManagerImpl.dispatchOptionsItemSelected(FragmentManager.java:3343)
        at android.support.v4.app.FragmentController.dispatchOptionsItemSelected(FragmentController.java:347)
        at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:413)
        at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
        at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108)
        at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108)
        at android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:63)
        at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:203)
        at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:780)
        at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
        at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:171)
        at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:973)
        at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:963)
        at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:624)
        at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:150)
        at android.view.View.performClick(View.java:6261)
        at android.widget.TextView.performClick(TextView.java:11185)
        at android.view.View$PerformClick.run(View.java:23752)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6776)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)

您必須檢查隱式意圖是否至少解決了一項活動,否則應用程序崩潰。

// Verify the intent will resolve to at least one activity
if (mContext != null && intent.resolveActivity(getPackageManager()) != null) {
    startActivity(chooser);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM