我用地图创建了应用程序。它工作正常,但我有一个问题。现在,使用地图的活动是主要活动。清单看起来像这样:
<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()。
答案 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开发者链接 -