Android fragments 如何防止在Android中两次打开MainActivity?

Android fragments 如何防止在Android中两次打开MainActivity?,android-fragments,android-manifest,android-fragmentactivity,splash-screen,Android Fragments,Android Manifest,Android Fragmentactivity,Splash Screen,我为我的处境寻找了一个多星期的解决方案,但我没有找到解决方案 我有一个主要的活动和使用片段。在我的项目中,我添加了一个SPLASH,但是一旦它完成执行,程序就会打开两次 代码如下: MainActivity.java package org.jotadev.nh; import org.jotadev.nh.adapter.TabsPagerAdapter; import android.app.ActionBar; import android.app.ActionBar.Tab; impo

我为我的处境寻找了一个多星期的解决方案,但我没有找到解决方案

我有一个主要的活动和使用片段。在我的项目中,我添加了一个SPLASH,但是一旦它完成执行,程序就会打开两次

代码如下:

MainActivity.java

package org.jotadev.nh;

import org.jotadev.nh.adapter.TabsPagerAdapter;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends FragmentActivity implements
        ActionBar.TabListener {

    private ViewPager viewPager;
    private TabsPagerAdapter mAdapter;
    private ActionBar actionBar;
    // Tab titles
    private String[] tabs = { "Buscar", "Historial", "Favoritos", "Planes" };


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

        Log.i("MainActivity", "entró en onCreate");

        // Initialization
        viewPager = (ViewPager) findViewById(R.id.pager);
        actionBar = getActionBar();
        mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

        viewPager.setAdapter(mAdapter);
        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        

        // Adding Tabs
        for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name)
                    .setTabListener(this));
        }

        /**
         * on swiping the viewpager make respective tab selected
         * */
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                // on changing the page
                // make respected tab selected
                actionBar.setSelectedNavigationItem(position);

                Log.i("MainActivity", "entró en onPageSelected");
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
        });     

    }


    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // on tab selected
        // show respected fragment view
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    }

    //menu
    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        super.onCreateOptionsMenu(menu);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }

    public void lanzarAbout(){
        Intent intent = new Intent(this, About.class);
        startActivity(intent);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        switch (item.getItemId()){
        case R.id.action_about:
            lanzarAbout();
            break;
        case R.id.action_settings:
            Intent intent = new Intent(this, Preferences.class);
            startActivity(intent);
            break;
        case R.id.action_show_preferences:
            Log.i("Action", "mostrando ajustes");
            mostrarPreferencias();
            break;
        case R.id.action_exit:
            finish();
        }

        return false;
    }

    private void mostrarPreferencias() {
        SharedPreferences pref = getSharedPreferences("org.jotadev.nh_preferences",MODE_PRIVATE);
        String s = "pantalla completa: " + pref.getBoolean("PantallaCompleta", false)
                + ", tamaño letra: " + pref.getString("Tamanoletra", "?")
                + ", color Fondo: " + pref.getString("ColorFondo", "?")
                + "En Desarrollo: " + pref.getBoolean("Endesarrollo", true);
        Toast.makeText(this, s, Toast.LENGTH_LONG).show();

    }

}
活动\u main.xml

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</android.support.v4.view.ViewPager>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.jotadev.nh"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
        android:debuggable="true"
        >
        <!-- Splash -->
        <activity
            android:name=".Splash"
            android:label="@string/app_name"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity> 
        <activity
            android:name="org.jotadev.nh.MainActivity"
            android:label="@string/app_name" >
             <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/app_name" 
            android:name=".About">
        </activity>
        <activity android:label="@string/title_settings" 
            android:name=".Preferences">
        </activity>
    </application>

</manifest>

AndroidManifiest.xml

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</android.support.v4.view.ViewPager>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.jotadev.nh"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
        android:debuggable="true"
        >
        <!-- Splash -->
        <activity
            android:name=".Splash"
            android:label="@string/app_name"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity> 
        <activity
            android:name="org.jotadev.nh.MainActivity"
            android:label="@string/app_name" >
             <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/app_name" 
            android:name=".About">
        </activity>
        <activity android:label="@string/title_settings" 
            android:name=".Preferences">
        </activity>
    </application>

</manifest>


我感谢你的帮助。或者请分享一个有用的链接。很难找到答案。

请将此翻译成英语。好的,谢谢你教克里斯特·安德森。如果你知道一些这个问题,请帮助我。谢谢。@carl anderson你能帮我吗?