Android 如何从活动中调用导航抽屉片段?

Android 如何从活动中调用导航抽屉片段?,android,android-fragments,navigation,navigation-drawer,Android,Android Fragments,Navigation,Navigation Drawer,我有一个由Android studio创建的导航抽屉。我从导航抽屉调用了一个活动。在该活动中,导航抽屉未显示? 如何从以下活动调用导航抽屉 玩家活动 import com.google.android.youtube.player.YouTubeInitializationResult; import com.google.android.youtube.player.YouTubeStandalonePlayer; public class PlayerActivity extends Ac

我有一个由Android studio创建的导航抽屉。我从导航抽屉调用了一个活动。在该活动中,导航抽屉未显示? 如何从以下活动调用导航抽屉

玩家活动

import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubeStandalonePlayer;

public class PlayerActivity extends Activity {

private static final int REQ_START_STANDALONE_PLAYER = 1;
private static final int REQ_RESOLVE_SERVICE_MISSING = 2;

private static final String PLAYLIST_ID = "PL5BxbbBpI7r";
public static final String DEVELOPER_KEY = "AIwXEZQLS-U";

private NavigationDrawerFragment mNavigationDrawerFragment;

private CharSequence mTitle;

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_player);
}

public void Play(View v) {
    int startIndex = 0;
    int startTimeMillis = 0;
    boolean autoplay = true;
    boolean lightboxMode = false;

    Intent intent = null;
    intent = YouTubeStandalonePlayer.createPlaylistIntent(this, DEVELOPER_KEY,
            PLAYLIST_ID, startIndex, startTimeMillis, autoplay, lightboxMode);

    if (intent != null) {
        if (canResolveIntent(intent)) {
            startActivityForResult(intent, REQ_START_STANDALONE_PLAYER);
        } else {
            // Could not resolve the intent - must need to install or update the YouTube API service.
            YouTubeInitializationResult.SERVICE_MISSING
                    .getErrorDialog(this, REQ_RESOLVE_SERVICE_MISSING).show();
        }
    }
}

private boolean canResolveIntent(Intent intent) {
    List<ResolveInfo> resolveInfo = getPackageManager().queryIntentActivities(intent, 0);
    return resolveInfo != null && !resolveInfo.isEmpty();
}

你应该使用片段而不是活动!创建项目时,默认情况下应该有两个片段。一个用于导航抽屉,另一个用于内容。您应该用放入第二个活动中的新内容替换该内容片段。

导航抽屉
用于处理片段,因为抽屉本身就是一个片段。只要保持在相同的
活动
中,您就可以访问该抽屉,但一旦更改
活动
,您就无法访问该抽屉(除非您创建该抽屉的另一个实例,但这样您就失去了它的全部意义)。为了实现你想要的,我推荐两件事

1) 而不是启动新的
活动
make
PlayerActivity
片段


2) 使用抽屉创建BaseActivity并使所有其他活动扩展它,这样您的项目中只有一个抽屉引用。

您需要在
PlayerActivity中执行相同的操作

   mNavigationDrawerFragment = (NavigationDrawerFragment)getFragmentManager().findFragmentById(R.id.navigation_drawer);
         mTitle = getTitle();
        // Set up the drawer.
        mNavigationDrawerFragment.setUp(
                R.id.navigation_drawer,
                (DrawerLayout) findViewById(R.id.drawer_layout));
同时将导航抽屉放在
R.layout.activity\u播放器中


就像你在
R.layout.activity\u导航中所做的那样,我还没有创建这个项目。Android studio本身根据模板创建了此导航抽屉项目。我无法将播放器活动更改为片段,因为它使用的是Youtube API。使用YouTubePlayerFragment for Youtube API我无法将播放器活动更改为片段,因为它使用的是Youtube API。
   mNavigationDrawerFragment = (NavigationDrawerFragment)getFragmentManager().findFragmentById(R.id.navigation_drawer);
         mTitle = getTitle();
        // Set up the drawer.
        mNavigationDrawerFragment.setUp(
                R.id.navigation_drawer,
                (DrawerLayout) findViewById(R.id.drawer_layout));