标签: illegalstateexception

Android SQLite SQLiteOpenHelper IllegalStateException - 数据库已经关闭错误

这让我疯狂了好几天了.我有一个非常复杂的Android应用程序.它使用多个线程从服务器提取数据并填充SQLite数据库.我正在使用单例来引用我的SQLiteOpenHelper扩展.我在每个活动中打开和关闭数据库.

该错误仅发生在我4次活动深度然后尝试退出的情况下.我已经尝试了各种方法来打开和关闭数据库,包括将关闭从onDestroy()移动到onPause()方法,还添加另一个打开到onResume().

另外值得注意的是,我的活动大量使用了ListViews和ExpandableListViews,据我所知,这可能会导致数据库关闭,基于这篇文章:http: //darutk-oboegaki.blogspot.com/2011/03/sqlitedatabase-is-closed- automatically.html

我已经完成了代码并确保我要么关闭所有游标,要么将它们分配给适配器,调用startManagingCursor().

有没有人知道发生了什么?

java.lang.RuntimeException: Unable to resume activity {com.fieldone/com.fieldone.DispatchActivity}: java.lang.IllegalStateException: database /data/data/com.fieldone/databases/InterstateAirConditioning-1602814322.db already closed
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3347)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3362)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2162)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:144)
    at android.app.ActivityThread.main(ActivityThread.java:4937)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: database /data/data/com.fieldone/databases/InterstateAirConditioning-1602814322.db already closed
    at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:237)
    at android.database.sqlite.SQLiteQuery.requery(SQLiteQuery.java:145)
    at android.database.sqlite.SQLiteCursor.requery(SQLiteCursor.java:567)
    at android.app.Activity.performRestart(Activity.java:3836)
    at android.app.Activity.performResume(Activity.java:3857)
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3337)
    ... 10 more
Run Code Online (Sandbox Code Playgroud)

更新: 我已经修复了问题,但不确定为什么要修复它.所以,也许有人知道或可以解释.

当我处于活动堆栈的第4个活动时,我试图通过db.close()关闭数据库.无论我把它放在哪里,在我得到我需要的数据之后的onCreate中,或者在onStop或onDestroy中,它都会产生这个错误.如果我不关闭数据库,我没有问题.因此,导致数据库自动关闭的原因.奇怪的是,虽然我在最后的活动中使用了expandableListView,但我没有使用cursorAdapter.有人有什么想法?很想明白这一点.

database sqlite android illegalstateexception sqliteopenhelper

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

Android illegalstatexception

我正在尝试将带有Android的UDP数据包发送到我的计算机上用C#编写的服务器.当我在手机上运行应用程序时,我会收到非法状态异常.我认为这可能与在主要活动上执行网络操作有关,但我不知道如何解决这个问题.这是我的客户:

public class MainActivity extends Activity {

WifiManager wifi;
InetAddress dev_ip;
final int serverPort = 31337;
Thread drawThread = new Thread(new drawer());

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

    //set up wifi and connection
    wifi = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
    WifiInfo info = wifi.getConnectionInfo();
    int ip = info.getIpAddress();        
    String ipaddr = (ip & 0xff) + "." + (ip >> 8 & 0xff) + "." + (ip >> 16 & 0xff) + "." + (ip >> 24 & 0xff);

    try {
        dev_ip …
Run Code Online (Sandbox Code Playgroud)

java sockets android udp illegalstateexception

11
推荐指数
1
解决办法
3648
查看次数

Android片段和方向更改导致:IllegalStateException:在onSaveInstanceState之后无法执行此操作

每当我加载片段的主要活动并且用户启动新活动,切换设备的方向并返回主活动时,我就会收到此错误.

@Override
public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.home_layout);
    super.onCreate(savedInstanceState);
    fragmentManager = getSupportFragmentManager();
    fragment = fragmentManager.findFragmentById(R.id.layFragment);

    initialize();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    setContentView(R.layout.home_layout);
    initialize();
    super.onConfigurationChanged(newConfig);
}

private void initialize() {
    layStatus = (LinearLayout) findViewById(R.id.layStatus);
    txtStatus = (TextView) findViewById(R.id.txtStatus);
    ....
    handleFragments(lastFragmentId);
}

public void handleFragments(int fragmentId) {
        if (fragment == null) {
            FragmentTransaction ft = fragmentManager.beginTransaction();
            if (fragmentId==someFragmentId){
                ft.replace(R.id.layFragment, new FragmentSomeFragment());
            }
            else
            ....

            ft.commit();
        }
}
Run Code Online (Sandbox Code Playgroud)

在我的android清单中,活动被声明为:

 <activity
        android:name=".HomeActivity"
        android:configChanges="keyboardHidden|orientation" />
<activity
Run Code Online (Sandbox Code Playgroud)

在另一个关于SO的问题中,我发现这可能是由支持库中的一个错误造成的,我添加没有任何运气:

// needed as a workaround for …
Run Code Online (Sandbox Code Playgroud)

android fragment illegalstateexception

11
推荐指数
2
解决办法
1万
查看次数

在Swing中处理JFXPanel时出现JavaFX IllegalStateException

我刚刚遇到了JavaFX和Swing的奇怪之处.

处理已添加到JFrame或JPanel的JavaFX Panel时,重新添加新的JFXPanel将抛出IllegalStateException:"已调用Platform.exit".

在我的情况下,这是在我用JFXPanels删除了一些JPanels然后尝试重新添加它们之后发生的.

java swing javafx disposing illegalstateexception

11
推荐指数
1
解决办法
3046
查看次数

使用PagerAdapter的IllegalStateException

我在此活动中收到IllegalStateException但不太确定发生了什么.这是QuickContactActivity中的ViewPagerAdapter类.

private class ViewPagerAdapter extends FragmentPagerAdapter {
    public ViewPagerAdapter(FragmentManager fragmentManager) {
        super(fragmentManager);
    }

    @Override
    public Fragment getItem(int position) {
        QuickContactListFragment fragment = new QuickContactListFragment();
        final String mimeType = mSortedActionMimeTypes.get(position);
        final List<Action> actions = mActions.get(mimeType);
        fragment.setActions(actions);
        return fragment;
    }

    @Override
    public int getCount() {
        return mSortedActionMimeTypes.size();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是崩溃日志:

07-15 09:49:21.060: E/com.##.##.##.Application(12378): Thread uncaught exception:
07-15 09:49:21.060: E/com.##.##.##.Application(12378): java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 0, found: 1 Pager id: com.##.##.android:id/item_list_pager Pager class: …
Run Code Online (Sandbox Code Playgroud)

android illegalstateexception fragmentpageradapter android-pageradapter

11
推荐指数
1
解决办法
3万
查看次数

DialogFragment - 在onSaveInstanceState之后无法执行此操作

我正在开发一个启动器应用程序,当用户验证自身时会显示对话框碎片.大部分时间这都运行良好,但有时我有这个错误日志:

02-07 18:55:56.619: E/AndroidRuntime(1300): java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
02-07 18:55:56.619: E/AndroidRuntime(1300):     at android.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1280)
02-07 18:55:56.619: E/AndroidRuntime(1300):     at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1291)
02-07 18:55:56.619: E/AndroidRuntime(1300):     at android.app.BackStackRecord.commitInternal(BackStackRecord.java:548)
02-07 18:55:56.619: E/AndroidRuntime(1300):     at android.app.BackStackRecord.commit(BackStackRecord.java:532)
02-07 18:55:56.619: E/AndroidRuntime(1300):     at android.app.DialogFragment.dismissInternal(DialogFragment.java:292)
02-07 18:55:56.619: E/AndroidRuntime(1300):     at android.app.DialogFragment.dismiss(DialogFragment.java:258)
02-07 18:55:56.619: E/AndroidRuntime(1300):     at com.blablabla.android.app.fragments.login.LoginResultFragment$CloseDialogRunnable.run(LoginResultFragment.java:59)
02-07 18:55:56.619: E/AndroidRuntime(1300):     at android.os.Handler.handleCallback(Handler.java:615)
02-07 18:55:56.619: E/AndroidRuntime(1300):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-07 18:55:56.619: E/AndroidRuntime(1300):     at android.os.Looper.loop(Looper.java:137)
02-07 18:55:56.619: E/AndroidRuntime(1300):     at android.app.ActivityThread.main(ActivityThread.java:4745)
02-07 18:55:56.619: E/AndroidRuntime(1300):     at java.lang.reflect.Method.invokeNative(Native Method)
02-07 18:55:56.619: E/AndroidRuntime(1300):     at java.lang.reflect.Method.invoke(Method.java:511)
02-07 18:55:56.619: …
Run Code Online (Sandbox Code Playgroud)

android illegalstateexception android-dialogfragment

11
推荐指数
2
解决办法
1万
查看次数

IllegalStateException一旦设置便无法更改活动类型

我可以看到在多个设备上引发了异常,但使用该异常的字符串从Google的测试类中找不到任何异常。您有什么暗示为什么会这样吗?

Fatal Exception: java.lang.IllegalStateException: Can't change activity type once set: { mBounds=Rect(0, 0 - 1080, 2076) mAppBounds=Rect(0, 0 - 1080, 2076) mWindowingMode=fullscreen mActivityType=home} activityType=standard
       at android.os.Parcel.createException(Parcel.java:1974)
       at android.os.Parcel.readException(Parcel.java:1934)
       at android.os.Parcel.readException(Parcel.java:1884)
       at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:3604)
       at android.app.Instrumentation.execStartActivity(Instrumentation.java:1669)
       at android.app.Activity.startActivityForResult(Activity.java:4688)
       at android.support.v4.app.FragmentActivity.startActivityForResult(SourceFile:767)
       at android.app.Activity.startActivityForResult(Activity.java:4646)
       at android.support.v4.app.FragmentActivity.startActivityForResult(SourceFile:754)
       at android.app.Activity.startActivity(Activity.java:5007)
       at android.app.Activity.startActivity(Activity.java:4975)
       at com.myapp.MyActivity.showAndroidHomeScreen(SourceFile:208)
       at com.myapp.MyActivity.onBackPressed(SourceFile:548)
       at android.app.Activity.onKeyUp(Activity.java:3168)
       at android.view.KeyEvent.dispatch(KeyEvent.java:3374)
       at android.app.Activity.dispatchKeyEvent(Activity.java:3451)
       at android.support.v4.app.SupportActivity.superDispatchKeyEvent(SourceFile:108)
       at android.support.v4.view.KeyEventDispatcher.dispatchKeyEvent(SourceFile:84)
       at android.support.v4.app.SupportActivity.dispatchKeyEvent(SourceFile:126)
       at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(SourceFile:535)
       at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(SourceFile:59)
       at android.support.v7.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(SourceFile:2533)
       at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:564)
       at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:6012)
       at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5867)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5320)
       at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5373)
       at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5339) …
Run Code Online (Sandbox Code Playgroud)

android illegalstateexception

11
推荐指数
1
解决办法
494
查看次数

Why am I getting "Unable to pause activity IllegalStateException: Restarter must be created only during owner's initialization stage" in Android?

I am using a FragmentActivity and sometimes on Crashlytics, I am able to see an exception Fatal Exception: java.lang.RuntimeException: Unable to pause activity

Below is the onPause of my FragmentActivity

@Override
protected void onPause() {
    super.onPause();
    if (EventBus.getDefault().isRegistered(this))
        EventBus.getDefault().unregister(this);
}
Run Code Online (Sandbox Code Playgroud)

Here is the stack trace of this crash.

Fatal Exception: java.lang.RuntimeException: Unable to pause activity {com.avail.easyloans.android/com.avail.easyloans.feature.marketplace.activities.ActivityMarketplace}: java.lang.IllegalStateException: Restarter must be created only during owner's initialization stage
       at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3471)
       at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3430)
       at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3402)
       at android.app.ActivityThread.access$1300(ActivityThread.java:151)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1416)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:157) …
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle illegalstateexception onpause android-fragmentactivity

11
推荐指数
0
解决办法
861
查看次数

为什么MediaRecorder的start()方法抛出IllegalStateException?

我正在尝试录制音频,但是类的start()方法会MediaRecorder抛出一个IllegalStateException.我使用以下代码:

MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile("/sdcard/");
try {
    recorder.prepare();
} catch (IllegalStateException e) {

// TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Log.i("Try","Exception");
recorder.start(); 
Run Code Online (Sandbox Code Playgroud)

并获得许可

<uses-permission android:name="android.permission.RECORD_AUDIO" />
Run Code Online (Sandbox Code Playgroud)

android user-permissions illegalstateexception mediarecorder

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

IllegalStateException:填充后视图大小太小

我正在开发一个Android应用程序.在这个应用程序中,我在片段中显示MapView.如果我的设备旋转,我尝试使用以下方法之一移动相机:

mapa.animateCamera(cameraUpdate);

要么

mapa.moveCamera(cameraUpdate);

然后我的应用程序崩溃并显示以下错误:

java.lang.IllegalStateException: View size is too small after padding
 at com.google.a.a.ab.b(Unknown Source)
 at com.google.maps.api.android.lib6.gmm6.c.a.a(Unknown Source)
 at com.google.maps.api.android.lib6.gmm6.c.a.a(Unknown Source)
 at com.google.maps.api.android.lib6.d.dw.a(Unknown Source)
 at com.google.maps.api.android.lib6.gmm6.c.a.a(Unknown Source)
 at com.google.maps.api.android.lib6.d.et.a(Unknown Source)
 at com.google.android.gms.maps.internal.j.onTransact(SourceFile:83)
 at android.os.Binder.transact(Binder.java:380)
 at com.google.android.gms.maps.internal.IGoogleMapDelegate$zza$zza.moveCamera(Unknown Source)
 at com.google.android.gms.maps.GoogleMap.moveCamera(Unknown Source)
 at com.accionplus.dbdplus.utils.MapUtils.centrarCamara(MapUtils.java:88)
 at com.accionplus.dbdplus.utils.MapUtils.centrarCamara(MapUtils.java:52)
 at com.accionplus.dbdplus.controladores.pdv.RutaProgramadaFragment$4.onMyLocationButtonClick(RutaProgramadaFragment.java:274)
 at com.google.android.gms.maps.GoogleMap$3.onMyLocationButtonClick(Unknown Source)
 at com.google.android.gms.maps.internal.zzo$zza.onTransact(Unknown Source)
 at android.os.Binder.transact(Binder.java:380)
 at com.google.android.gms.maps.internal.be.a(SourceFile:81)
 at com.google.maps.api.android.lib6.d.ak.onClick(Unknown Source)
 at android.view.View.performClick(View.java:5156)
 at android.view.View$PerformClick.run(View.java:20755)
 at android.os.Handler.handleCallback(Handler.java:739)
 at android.os.Handler.dispatchMessage(Handler.java:95)
 at android.os.Looper.loop(Looper.java:145)
 at android.app.ActivityThread.main(ActivityThread.java:5832)
 at java.lang.reflect.Method.invoke(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:372)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
 at …
Run Code Online (Sandbox Code Playgroud)

android google-maps illegalstateexception

10
推荐指数
2
解决办法
8165
查看次数