2016-07-15 7 views
-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; 
     } 
    } 

いかなる意図フラグが利用可能であるか、いくつかの変更を行う必要があります。

は、ここで関連するコードです。お願い助けて。ありがとう。

+0

ので、あなたが主な活動で共有する意思をクリックし、全体のアプリを閉じて戻ってクリックしたとき? –

答えて

0

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

これは正常な動作であり、バックリクエストがあなたに送信されていると推測しています。これが次のステップであるため終了します。 終了リクエストを受け取り、好きなことをすることができます。

@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; 
.... 
関連する問題