-1

スワイプ可能なタブ ビューの 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;
        }
    }

使用可能なインテント フラグはありますか、またはいくつかの変更を加える必要があります。お願い助けて。ありがとう。

4

1 に答える 1

0

結果の共有に応答しないため、アプリケーションがクラッシュしていませんか? ログを表示する必要があります。

これは通常の動作であり、バック リクエストがアプリに送信されて終了していると思います。これは次のステップ バックであるためです。終了要求をキャッチして、好きなことをすることができます。

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

おそらく、do you want to quit ye​​s|no の行に警告ダイアログが表示されます。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;
....
于 2016-07-15T13:59:08.170 に答える