如何在使用共享意图时将主要活动置于顶部

时间:2016-07-15 13:29:27

标签: android android-fragments android-intent share-intent

我在MainActivity中使用了materialTabHost和viewPager来获取可滑动的标签视图。 我还添加了导航抽屉。当我点击导航抽屉中列出的任何项目时,它将打开相关的片段。当我点击它时会将我带到MainActivity。但这里的问题是共享意图,也在导航抽屉中列出。当我点击分享时,它会打开共享对话框,但是按回按钮它不会引导我进入MainActivity,而应用程序将关闭。

以下是相关代码:

...........    
mDrawerToggle = getActionBarDrawerToggle();
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    mDrawerList = (ListView) findViewById(R.id.list_drawer);
    mListTitles = new String[]{
            getString(R.string.title_section1),
            getString(R.string.title_section2),
            getString(R.string.title_section3),
            getString(R.string.title_section4),
            getString(R.string.title_section5),
    };
    mDrawerList.setAdapter(new ArrayAdapter<>(this,
            R.layout.drawer_list_item, mListTitles));
.....

void newFragment(int position) {

        switch (position) {
            case 0:
                mFragment = new VideoFragment(AppGlobals.DIRECTORY.VIDEOS);
                mViewPager.removeAllViews();
                FragmentManager fragmentManager = getSupportFragmentManager();
                fragmentManager.executePendingTransactions();
                fragmentManager.beginTransaction().replace(R.id.container, mFragment).commit();
                break;
            case 1:
                mFragment = new VideoFragment(AppGlobals.DIRECTORY.PICTURES);
                mViewPager.removeAllViews();
                FragmentManager fragmentManager2 = getSupportFragmentManager();
                fragmentManager2.executePendingTransactions();
                fragmentManager2.beginTransaction().replace(R.id.container, mFragment).commit();
                break;
            case 2:
                mFragment = new SettingFragment();
                mViewPager.removeAllViews();
                FragmentManager fragmentManager3 = getSupportFragmentManager();
                fragmentManager3.executePendingTransactions();
                fragmentManager3.beginTransaction().replace(R.id.container, mFragment).commit();
                break;
            case 3:
                mFragment = new AboutFragment();
                mViewPager.removeAllViews();
                FragmentManager fragmentManager4 = getSupportFragmentManager();
                fragmentManager4.executePendingTransactions();
                fragmentManager4.beginTransaction().replace(R.id.container, mFragment).commit();
                break;
            case 4:

                Intent shareIntent = new Intent(Intent.ACTION_SEND);
                shareIntent.setType("text/plain");
                StringBuilder shareBody = new StringBuilder().append("Hey, I just downloaded abc app. Really awesome app for Background/Silent video recording. Helpful for stopping bribe takers. Download from below link: https://play.google.com/store/apps/details?id=").append(getPackageName().toString());
                shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "abc app [High Definition]");
                shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody.toString());
                startActivity(Intent.createChooser(shareIntent, "Share via"));
                break;
            default:
                return;
        }
    }

是否有任何意图标志可用或需要进行一些更改。请帮帮我。感谢。

1 个答案:

答案 0 :(得分:0)

您的应用程序是否崩溃,因为它没有响应共享结果? 你应该显示你的日志。

我猜这是正常的行为,后退请求正在发送给你的app,让它退出,因为这是下一步。 您可以捕获退出请求,并执行您喜欢的操作。

    @Override
    public void exit()
    {
        Log.e(TAG, "exit");
    }

也许你想要退出的警告对话框是|否。 另见onPause()。

也可以尝试使用:

    public static final int     ACTIVITY_CREATE       = 0;

Intent i = Intent.createChooser(shareIntent, "Share via");
 startActivityForResult(i, ACTIVITY_CREATE);

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent)
    {
        if(resultCode == RESULT_CANCELED)
        {
            Log.e(TAG, "onActivityResult RESULT_CANCELED");
        }
        switch (requestCode)
        {
            case ACTIVITY_CREATE:
                if (resultCode == RESULT_OK)
                {
                    Log.v(TAG, "onActivityResult ACTIVITY_CREATE");
                }
                break;
....