0

デバイス ID とデバイス名がローカル データベース (sqlite) に存在するかどうかを確認するアクティビティがあり、デバイスが既に登録されている場合は、ConnectToCostCenter という別のアクティビティに渡します。アクティビティのコードは次のとおりです。

public class StartActivity extends Activity {

Handler handler = new Handler();
DBHandler dbHandler;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.start_activity);
    dbHandler = new DBHandler(this);
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            String DeviceId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
            String DeviceName = Build.MODEL;
            RegisterDevice cc = new RegisterDevice(DeviceId, DeviceName);
            if (!dbHandler.getAllDevice().isEmpty() && (dbHandler.getAllDevice().contains(cc)) ){
                final Intent mainIntent = new Intent(StartActivity.this, ConnectToCostCenter.class);
                startActivity(mainIntent);
            } else  {
              Intent intent = new Intent(StartActivity.this, CreateOrEditActivity.class);
                startActivity(intent);
            }
            StartActivity.this.finish();
        }
    }, 3000);
}

}

および ArrayList :

   public ArrayList<RegisterDevice> getAllDevice() {
    SQLiteDatabase db = this.getReadableDatabase();
    ArrayList<RegisterDevice> activityList = null;
    try{
        activityList = new ArrayList<RegisterDevice>();
        String QUERY = "SELECT * FROM "+DEVICE_TABLE_NAME;
        Cursor cursor = db.rawQuery(QUERY, null);
        if(!cursor.isLast())
        {
            while (cursor.moveToNext())
            {
                RegisterDevice activity = new RegisterDevice();

                activity.setDeviceId(cursor.getString(0));
                //     activity.setCreated(cursor.getString(2));
                //   activity.setModified(cursor.getString(3));
                activity.setDeviceName(cursor.getString(1));
                activityList.add(activity);
            }
        }
        db.close();
    }catch (Exception e){
        Log.e("error",e+"");
    }
    return activityList;
}

問題は、デバイスがデータベースに存在する場合、アクティビティ CreateOrEditActivity が ConnectToCostCenter の代わりに表示されることです。

4

1 に答える 1

0

条件の一致に少し混乱していると思います。配列リストを繰り返してループ内で条件を作成し、true または false を取得してアクティビティを必要な場所にリダイレクトできるようにするなど、別の方法を実行してください。

于 2016-09-30T14:56:22.307 に答える