2016-07-15 5 views
-1

Я использовал материалTabHost и viewPager в MainActivity для прокручиваемых видов вкладок. Также я добавил навигационный ящик. Когда я нажимаю на любой элемент, указанный в навигационном ящике, он открывает связанный фрагмент. и когда я нажму обратно, это приведет меня к MainActivity. Но здесь проблема заключается в совместном намерении, которое также указано в навигационном ящике. Когда я нажимаю на общий доступ, он откроет диалог общего доступа, но нажав кнопку «Назад», он не приведет меня к MainActivity, вместо этого приложение закрывается.Как перенести основное действие сверху при использовании намерения share

Вот соответствующий код:

...........  
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; 
....