小编Vor*_*ier的帖子

屏幕旋转后不会调用onSaveInstanceState

我知道有许多问题在关于保存事件状态,但我无法找到问题的答案.

我有一个扩展AppCompatActivity的活动; 此活动使用3个片段,它有一个变量'int currentStep'来跟踪正在显示的片段.在onSavedInstanceState方法中,我将currentStep变量存储在bundle中,然后在onCreate方法中我将其恢复.

public class MainActivity extends AppCompatActivity {
    private final String CURRENT_STEP_TAG = "current_step";
    private int currentStep;

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

        if(savedInstanceState == null) {
            loadFirstFragment();
        } else {            
            currentStep = savedInstanceState.getInt(CURRENT_STEP_TAG);
            if(currentStep == 2){
                //Do some stuff...
            }
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        Log.d("deubg", "--------onsaveinstancestate--------");
        outState.putInt(CURRENT_STEP_TAG, currentStep);
        super.onSaveInstanceState(outState, outPersistentState);
    }

 ...

}
Run Code Online (Sandbox Code Playgroud)

问题是onSavedInstanceState在屏幕变化时不会被调用,并且根据谷歌文档,它应该.消息"-------- onsaveinstancestate --------"未在控制台中显示.但是,onCreate方法中的Bundle savedInstanceState在屏幕旋转后为非null,但它没有int'sturrentStep'.

我尝试了很多东西:为ActionBarActivity更改了AppCompatActivity,将super.onSavedInstanceState的调用移到了不同​​的位置,试图存储其他变量; 但无论我做什么,该方法都不会执行.

另外,我的清单中没有android:configChanges.

我的应用程序是针对sdk版本22,buildToolsVersion 22.0.1编译的

java android android-fragments android-activity

25
推荐指数
1
解决办法
6484
查看次数

NoClassDefFoundError Android项目

首先,我知道有很多关于这个主题的问题/答案,我已经阅读了大部分内容但仍然收到错误:

05-17 02:57:06.522: E/AndroidRuntime(17073): java.lang.NoClassDefFoundError: ar.com.package.android.MainActivity
Run Code Online (Sandbox Code Playgroud)

该项目工作正常,直到我将Eclipse从21更新到22.

我尽我所能:我检查了清单; 清理了项目; 检查了我的构建路径,在不同的Android版本中尝试了应用程序,将java合规性级别设置为1.6(库也是如此)等等.我只是无法弄清楚问题是什么.

这是我的清单,我发现它没有任何问题:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ar.com.package.android"
android:versionCode="1"
android:versionName="1.0" >

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/> 

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

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

<permission
    android:name="ar.com.package.android.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"/>
<uses-permission android:name="ar.com.package.android.permission.MAPS_RECEIVE"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.Sherlock.Light.DarkActionBar" 
    android:hardwareAccelerated="true">


    <meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="my key"/>


    <activity
        android:name="ar.com.package.android.SplashScreen"
        android:label="@string/app_name"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Black.NoTitleBar"
        android:windowSoftInputMode="stateHidden"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name="ar.com.package.android.MainActivity"
        android:logo="@drawable/logo"
        android:screenOrientation="portrait" 
        android:windowSoftInputMode="stateHidden"
         >
    </activity>

    <activity
        android:name="ar.com.package.android.SearchForm" …
Run Code Online (Sandbox Code Playgroud)

android noclassdeffounderror

10
推荐指数
1
解决办法
4万
查看次数