Android 如何从活动中调用导航抽屉片段?
我有一个由Android studio创建的导航抽屉。我从导航抽屉调用了一个活动。在该活动中,导航抽屉未显示? 如何从以下活动调用导航抽屉 玩家活动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
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) 而不是启动新的活动
makePlayerActivity
片段
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));