diff --git a/app/src/main/java/jp/juggler/subwaytooter/ActMain.java b/app/src/main/java/jp/juggler/subwaytooter/ActMain.java index 89fd4a52..11cbad90 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ActMain.java +++ b/app/src/main/java/jp/juggler/subwaytooter/ActMain.java @@ -3275,7 +3275,7 @@ public class ActMain extends AppCompatActivity if( pager_adapter != null ){ pager.setAdapter( pager_adapter ); }else{ - tablet_pager_adapter.notifyDataSetChanged(); + resizeColumnWidth(); } } @@ -3377,8 +3377,9 @@ public class ActMain extends AppCompatActivity if( pager_adapter != null ){ pager.setAdapter( pager_adapter ); }else{ - tablet_pager_adapter.notifyDataSetChanged(); + resizeColumnWidth(); } + updateColumnStrip(); } // 通知サービスをリスタート @@ -3387,8 +3388,6 @@ public class ActMain extends AppCompatActivity intent.setAction( AlarmService.ACTION_APP_DATA_IMPORT_AFTER ); startService( intent ); } - - updateColumnStrip(); } }; diff --git a/app/src/main/java/jp/juggler/subwaytooter/AppDataExporter.java b/app/src/main/java/jp/juggler/subwaytooter/AppDataExporter.java index 8423eaac..79613184 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/AppDataExporter.java +++ b/app/src/main/java/jp/juggler/subwaytooter/AppDataExporter.java @@ -156,7 +156,6 @@ public class AppDataExporter { SavedAccount.onDBCreate( db ); } - boolean bOK = false; db.execSQL( "BEGIN TRANSACTION" ); try{ db.execSQL( "delete from " + table ); @@ -178,6 +177,14 @@ public class AppDataExporter { continue; } + // 一時的に存在したが現在のDBスキーマにはない項目は読み飛ばす + if( SavedAccount.table.equals( table ) && + ( "nickname".equals( name ) || "color".equals( name ) ) + ){ + reader.skipValue(); + continue; + } + JsonToken token = reader.peek(); switch( token ){ case NULL: @@ -204,19 +211,24 @@ public class AppDataExporter { } } reader.endObject(); - long new_id = db.insert( table, null, cv ); - if( id_map != null ) id_map.put( old_id, new_id ); + long new_id = db.insertWithOnConflict( table, null, cv, SQLiteDatabase.CONFLICT_REPLACE ); + if( new_id == - 1L ){ + throw new RuntimeException( "importTable: invalid row_id" ); + } + if( id_map != null ){ + id_map.put( old_id, new_id ); + } } reader.endArray(); - bOK = true; + db.execSQL( "COMMIT TRANSACTION" ); }catch( Throwable ex ){ ex.printStackTrace(); - log.e( ex, "saveList failed." ); - } - if( bOK ){ - db.execSQL( "COMMIT TRANSACTION" ); - }else{ - db.execSQL( "ROLLBACK TRANSACTION" ); + log.e( ex, "importTable failed." ); + try{ + db.execSQL( "ROLLBACK TRANSACTION" ); + }catch( Throwable ignored ){ + } + throw ex; } } @@ -330,7 +342,13 @@ public class AppDataExporter { throw new RuntimeException( "readColumn: can't convert account id" ); } item.put( Column.KEY_ACCOUNT_ROW_ID, (long) new_id ); - result.add( new Column( app_state, item ) ); + try{ + result.add( new Column( app_state, item ) ); + }catch( Throwable ex ){ + ex.printStackTrace(); + log.e( ex, "column load failed." ); + throw ex; + } } reader.endArray(); return result;