活性的研究两个主要活动开始前 [英] Acitivity Two starts before Main Activity
问题描述
我找不到这个问题的任何解决方案。结果
这就是。
我有两个活动:主要活动和三角活动,我想看到的主要活动应用程序启动时
。下面是我的主要活动:
公共类MainActivity延伸活动{
//声明属性
私有String [] mNavigationDrawerItemTitles;
私人DrawerLayout mDrawerLayout;
私人的ListView mDrawerList; 私人ActionBarDrawerToggle mDrawerToggle; //导航抽屉称号
私人CharSequence的mDrawerTitle; //用于存储应用程序标题
私人CharSequence的mTitle; @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main); //正确的标题
mTitle = mDrawerTitle =的getTitle(); //初始化属性
mNavigationDrawerItemTitles = getResources()。
getStringArray(R.array.navigation_drawer_items_array);
mDrawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);
mDrawerList =(ListView控件)findViewById(R.id.left_drawer); //列出抽屉物品
ObjectDrawerItem [] drawerItem =新ObjectDrawerItem [4]; drawerItem [0] =新ObjectDrawerItem(R.drawable.triangleTrougao);
drawerItem [1] =新ObjectDrawerItem(R.drawable.recCetvorougao);
drawerItem [2] =新ObjectDrawerItem(R.drawable.hexagonMnogougao);
drawerItem [3] =新ObjectDrawerItem(R.drawable.circle克鲁格); //通过folderData我们的ListView适配器
DrawerItemCustomAdapter适配器=新DrawerItemCustomAdapter(这一点,
R.layout.drawer_layout,drawerItem); //设置列表视图中的适配器
mDrawerList.setAdapter(适配器); //设置项点击监听器
mDrawerList.setOnItemClickListener(新DrawerItemClickListener()); //为导航抽屉的应用程序图标控制
mDrawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);
mDrawerToggle =新ActionBarDrawerToggle(
对此,/ *主机活动* /
mDrawerLayout,/ * DrawerLayout对象* /
R.drawable.ic_drawer,/ *导航抽屉图标来取代上插入符* /
R.string.drawer_open,/ *打开的抽屉的描述* /
R.string.drawer_close / *关闭抽屉的描述* /
){ / **当抽屉处于完全封闭状态先后落户调用。 * /
公共无效onDrawerClosed(查看视图){
super.onDrawerClosed(视图);
。getActionBar()的setTitle(mTitle);
} / **当抽屉处于完全打开状态先后落户调用。 * /
公共无效onDrawerOpened(查看drawerView){
super.onDrawerOpened(drawerView);
。getActionBar()的setTitle(mDrawerTitle);
}
}; //设置抽屉切换为DrawerListener
mDrawerLayout.setDrawerListener(mDrawerToggle); //使动作条的应用程序图标表现为动作切换导航抽屉
getActionBar()setDisplayHomeAsUpEnabled(真)。
getActionBar()setHomeButtonEnabled(真)。 如果(savedInstanceState == NULL){
//对第一个项目的资产净值首次显示视图
选择信息(0);
}
} @覆盖
公共布尔onCreateOptionsMenu(菜单菜单){
//充气菜单;如果是present这增加了项目操作栏。
。getMenuInflater()膨胀(R.menu.main,菜单);
返回true;
} @覆盖
公共布尔onOptionsItemSelected(菜单项项){ //操作栏的家/跟进行动应打开或关闭抽屉。
// ActionBarDrawerToggle将照顾这。
如果(mDrawerToggle.onOptionsItemSelected(项目)){
返回true;
} 返回super.onOptionsItemSelected(项目);
} //改变了插入符号
@覆盖
保护无效onPostCreate(捆绑savedInstanceState){
super.onPostCreate(savedInstanceState);
//同步onRestoreInstanceState后切换状态已经发生。
mDrawerToggle.syncState();
} //抽屉式导航栏点击监听器
私有类DrawerItemClickListener实现ListView.OnItemClickListener { @覆盖
公共无效onItemClick(适配器视图<>母公司,观景,INT位置,长的id){
选择信息(位置);
}
} 私人无效选择信息(INT位置){ //更新替换片段的主要内容 //片段片段= NULL; 开关(位置){
情况下0:
意向意图=新意图(这一点,TriangleActivity.class); startActivity(意向); 打破;
情况1:
打破;
案例2:
打破;
案例3:
打破;
默认:
打破;
}
/ *
如果(片段!= NULL){
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()取代(R.id.content_frame,片段).commit(); * / //更新所选项目和标题,然后关上抽屉
/ * mDrawerList.setItemChecked(位置,真正的);
mDrawerList.setSelection(位置);
的setTitle(mNavigationDrawerItemTitles [位置]);
mDrawerLayout.closeDrawer(mDrawerList); * /
} / *}其他{
//错误创建片段
Log.e(MainActivity,出错创建片段);
}
} * / @覆盖
公共无效的setTitle(CharSequence的标题){
mTitle =称号;
。getActionBar()的setTitle(mTitle);
}
}
下面是三角活动:
公共类TriangleActivity扩展FragmentActivity实现ActionBar.TabListener { 私人ViewPager viewPager;
私人TabsPagerAdapter mAdapter;
私人动作条动作条; 私有String []选项卡= {SLIKA,Povrsina,Obim}; @覆盖
保护无效的onCreate(捆绑savedInstanceState){ // TODO自动生成方法存根
super.onCreate(savedInstanceState);
的setContentView(R.layout.acitivity_triangle); getActionBar()setDisplayHomeAsUpEnabled(真)。 viewPager =(ViewPager)findViewById(R.id.pager);
动作条= getActionBar();
mAdapter =新TabsPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(真);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setHomeButtonEnabled(真); 对于(字符串TAB_NAME:标签){
actionBar.addTab(actionBar.newTab()的setText(TAB_NAME).setTabListener(本));
}
viewPager.setOnPageChangeListener(新ViewPager.OnPageChangeListener(){ @覆盖
公共无效使用onPageSelected(INT位置){
actionBar.setSelectedNavigationItem(位置);
} @覆盖
公共无效onPageScrolled(INT为arg0,ARG1浮球,诠释ARG2){
// TODO自动生成方法存根
} @覆盖
公共无效onPageScrollStateChanged(INT为arg0){
// TODO自动生成方法存根
}
});
} 私有动作条getSupprtActionBar(){
// TODO自动生成方法存根
返回null;
} @覆盖
公共无效onTabReselected(标签选项卡,FragmentTransaction英尺){
// TODO自动生成方法存根 } @覆盖
公共无效onTabSelected(标签选项卡,FragmentTransaction英尺){
viewPager.setCurrentItem(tab.getPosition()); } @覆盖
公共无效onTabUnselected(标签选项卡,FragmentTransaction英尺){
// TODO自动生成方法存根
}
公共布尔onOptionsItemSelected(菜单项项){ 如果(item.getItemId()== android.R.id.home){
完();
}
返回super.onOptionsItemSelected(项目);
}
}
下面是我的AndroidManifest:
<?XML版本=1.0编码=UTF-8&GT?;
<清单的xmlns:机器人=http://schemas.android.com/apk/res/android
包=org.example.androidsdk.demo
安卓版code =1
机器人:=的versionName1.0> <用途-SDK
安卓的minSdkVersion =14
机器人:targetSdkVersion =21/> <应用
机器人:allowBackup =真
机器人:图标=@绘制/ ic_launcher
机器人:标签=@字符串/ APP_NAME
机器人:主题=@风格/ AppBaseTheme>
<活动
机器人:名字=org.example.androidsdk.demo.MainActivity
机器人:标签=@字符串/ APP_NAME 机器人:configChanges =方向|屏幕尺寸>
&所述;意图滤光器>
<作用机器人:名字=android.intent.action.MAIN/>
<类机器人:名字=android.intent.category.LAUNCHER/>
&所述; /意图滤光器>
< /活性GT; <活动机器人:名字=。TriangleActivity> < /活性GT;
< /用途>< /清单>
如果(savedInstanceState == NULL){
//对第一个项目的资产净值首次显示视图
选择信息(0);
}
这看起来很奇怪我。我猜想,当你的活动首次加载, savedInstanceState
为空,所以你会自动在你的导航菜单,这是 TriangleActivity 选择件商品的code>类。删除code以上部分,看看会发生什么。
I can not find any solution for this problem.
Here it is.
I have two activities: Main Activity and Triangle Activity and I want to see the Main Activity when app starts.
Here is my Main Activity:
public class MainActivity extends Activity {
// declare properties
private String[] mNavigationDrawerItemTitles;
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
// nav drawer title
private CharSequence mDrawerTitle;
// used to store app title
private CharSequence mTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// for proper titles
mTitle = mDrawerTitle = getTitle();
// initialize properties
mNavigationDrawerItemTitles = getResources().
getStringArray(R.array.navigation_drawer_items_array);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
// list the drawer items
ObjectDrawerItem[] drawerItem = new ObjectDrawerItem[4];
drawerItem[0] = new ObjectDrawerItem(R.drawable.triangle, "Trougao");
drawerItem[1] = new ObjectDrawerItem(R.drawable.rec, "Cetvorougao");
drawerItem[2] = new ObjectDrawerItem(R.drawable.hexagon, "Mnogougao");
drawerItem[3]=new ObjectDrawerItem(R.drawable.circle, "Krug");
// Pass the folderData to our ListView adapter
DrawerItemCustomAdapter adapter = new DrawerItemCustomAdapter(this,
R.layout.drawer_layout, drawerItem);
// Set the adapter for the list view
mDrawerList.setAdapter(adapter);
// set the item click listener
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
// for app icon control for nav drawer
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close /* "close drawer" description */
) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
getActionBar().setTitle(mTitle);
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActionBar().setTitle(mDrawerTitle);
}
};
// Set the drawer toggle as the DrawerListener
mDrawerLayout.setDrawerListener(mDrawerToggle);
// enable ActionBar app icon to behave as action to toggle nav drawer
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
if (savedInstanceState == null) {
// on first time display view for first nav item
selectItem(0);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// The action bar home/up action should open or close the drawer.
// ActionBarDrawerToggle will take care of this.
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
// to change up caret
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
// navigation drawer click listener
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectItem(position);
}
}
private void selectItem(int position) {
// update the main content by replacing fragments
// Fragment fragment = null;
switch (position) {
case 0:
Intent intent = new Intent(this,TriangleActivity.class);
startActivity(intent);
break;
case 1:
break;
case 2:
break;
case 3:
break;
default:
break;
}
/*
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();*/
// update selected item and title, then close the drawer
/* mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(mNavigationDrawerItemTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);*/
}
/* } else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}*/
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getActionBar().setTitle(mTitle);
}
}
Here is Triangle Activity:
public class TriangleActivity extends FragmentActivity implements ActionBar.TabListener {
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
private String []tabs={"Slika","Povrsina","Obim"};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.acitivity_triangle);
getActionBar().setDisplayHomeAsUpEnabled(true);
viewPager=(ViewPager) findViewById(R.id.pager);
actionBar=getActionBar();
mAdapter=new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(true);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setHomeButtonEnabled(true);
for (String tab_name : tabs) {
actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this));
}
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
private ActionBar getSupprtActionBar() {
// TODO Auto-generated method stub
return null;
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId()==android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
}
Here is my AndroidManifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.example.androidsdk.demo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppBaseTheme" >
<activity
android:name="org.example.androidsdk.demo.MainActivity"
android:label="@string/app_name"
android:configChanges="orientation|screenSize" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".TriangleActivity">
</activity>
</application>
</manifest>
if (savedInstanceState == null) {
// on first time display view for first nav item
selectItem(0);
}
This looks odd to me. I would guess that when your Activity first loads, savedInstanceState
is null so you are automatically selecting item one in your nav menu, which is the TriangleActivity
class. Remove the above section of code and see what happens.
这篇关于活性的研究两个主要活动开始前的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!