Android - 地图如果不是主要活动,则不起作用

时间:2017-01-21 16:21:11

标签: android maps

我用地图创建了应用程序。它工作正常,但我有一个问题。现在,使用地图的活动是主要活动。清单看起来像这样:

<meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />
        <activity
            android:name=".View.MainActivity"
            android:label="@string/title_activity_main" >

        </activity>
        <activity
            android:name=".View.MapsActivity"
            android:label="@string/title_activity_maps" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

我希望MainActivity是主要的,但是当我从MapsActivity删除行时:

<action android:name="android.intent.action.MAIN" />

并将其放在MainActivity中 - 应用程序无法正常工作。我认为凭证有些问题 - 我只看到白屏。你知道为什么吗?

这是我的MainActivity:

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        setContentView(R.layout.activity_main);
        Log.e(TAG, "onCreate: " );
    }
}

未调用日志,因此应用程序无法进入onCreate()。

2 个答案:

答案 0 :(得分:1)

您需要移动超过1行 - 将所有这些放在MainActivity元素中:

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

您还需要过滤器和类别行(此组使其成为您的主要活动)

答案 1 :(得分:1)

那是因为有两个onCreate()方法:

void onCreate(Bundle)

void onCreate (Bundle savedInstanceState, PersistableBundle persistentState)

如果您将persistableMode属性设置为persistAcrossReboots或您的活动是MAIN(root)活动,则只会调用第二个。

您正在使用第二种方法而未设置属性persistableMode。此属性的默认值为persistRootOnly。这意味着:

  

默认值。如果此活动形成任务的根,则该任务将在重新启动后保留,但仅使用启动意图。如果任务放弃其身份,则使用的意图是最顶层的继承身份。任务中此活动以上的所有活动都不会保留。此外,此活动不会传递给它可以存储其状态的PersistableBundle。

因此,当地图活动被定义为MAIN活动时,它适用于您。但既然它既不是根活动也不是persistableMode属性设置为persistAcrossReboots,则永远不会调用onCreate(Bundle savedInstanceState, PersistableBundle persistentState)

<强> SOLUTION:

如果您不使用onCreate(Bundle),只需使用第一个persistentState方法即可。如果您使用的是persistentState,则只需将persistableMode属性设置为persistAcrossReboots

相关的Android开发者链接 -