活性的研究两个主要活动开始前 [英] Acitivity Two starts before Main Activity

查看:192
本文介绍了活性的研究两个主要活动开始前的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我找不到这个问题的任何解决方案。结果
这就是。

我有两个活动:主要活动和三角活动,我想看到​​的主要活动应用程序启动时

下面是我的主要活动:

 公共类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.recCetvorou​​gao);
        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,Po​​vrsina,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(项目);
}
    }

下面是我的Andr​​oidManifest:

 <?XML版本=1.0编码=UTF-8&GT?;
<清单的xmlns:机器人=htt​​p://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以上部分,看看会发生什么。

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆