2013-09-29 179 views
1

嘿,我一直在努力做這項工作,但我無法弄清楚是什麼問題。布爾值從開始設置爲true

我希望stopValue在我啓動應用程序時爲false,然後它將由我在應用程序中的操作設置。我發現布爾值從一開始就是錯誤的,因此我的開始意圖設置爲false。

這不是我唯一的問題,當我進入開始公里,我的停止公里只給我停止公里。結果應該是起止公里。

我不知道這些問題是否有聯繫。也許我沒有得到sharedpreferences部分或者它可能是putextra或getIntent部分。

謝謝你的時間。

我的主類

public class Main extends Activity{ 

Button bStart, bStop; 
TextView tvView; 
Spinner spinner1; 
boolean stopValue; 
int startkilometer; 
String date; 



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

    bStart = (Button) findViewById(R.id.bStart); 
    tvView = (TextView) findViewById(R.id.tvView); 
    spinner1 = (Spinner) findViewById(R.id.spinner1); 

    date = getIntent().getStringExtra("datoen"); 
    startkilometer = getIntent().getIntExtra("startkm", 0); 


    SharedPreferences sp = getApplicationContext().getSharedPreferences("stopValue", 0); 
    stopValue = sp.getBoolean("stopper", stopValue); 

    SharedPreferences sp1 = getSharedPreferences("startkilometer", Activity.MODE_PRIVATE); 
    startkilometer = sp1.getInt("startkm", startkilometer); 

    SharedPreferences sp2 = getSharedPreferences("date", Activity.MODE_PRIVATE); 
    date = sp2.getString("datoen", date); 



    stopValue = getIntent().getBooleanExtra("stopper", stopValue); 


    if(stopValue){ 
     bStart.setText("Start"); 
     bStart.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       Intent start = new Intent("com.uniqueapps.runner.START"); 
       startActivity(start); 
      } 
     }); 
    } 
    if(stopValue == false){ 
     bStart.setText("Stop"); 
     bStart.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent stop = new Intent("com.uniqueapps.runner.STOP"); 
       stop.putExtra("startkm", startkilometer); 
       stop.putExtra("datoen", date); 
       startActivity(stop); 
      } 
     }); 
    } 

    KilometerSQL info = new KilometerSQL(this); 
    info.open(); 
    String data = info.getData(); 
    info.close(); 
    tvView.setText(data); 

    } 




@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 

    super.onResume(); 



} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 

    SharedPreferences sp = getApplicationContext().getSharedPreferences("stopValue", 0); 
    Editor edit = sp.edit(); 
    edit.putBoolean("stopper", stopValue); 
    edit.commit(); 

    SharedPreferences sp1 = getApplicationContext().getSharedPreferences("startkilometer", 0); 
    Editor edit1 = sp1.edit(); 
    edit1.putInt("startkm", startkilometer); 
    edit1.commit(); 

    SharedPreferences sp11 = getApplicationContext().getSharedPreferences("date", 0); 
    Editor edit11 = sp11.edit(); 
    edit11.putString("datoen", date); 
    edit11.commit(); 



    super.onPause(); 
} 

我的發車班

public class Start extends Main implements OnClickListener { 

Button bStartTur; 
EditText etDate, etKm; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.start); 
    bStartTur = (Button) findViewById(R.id.bStartTur); 
    bStartTur.setOnClickListener(this); 
    etDate = (EditText) findViewById(R.id.etdate); 
    etKm = (EditText) findViewById(R.id.etKm); 

    Calendar cal = Calendar.getInstance(); 

    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); 
    etDate.setText(format.format(new Date())); 



} 



@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

    String date = etDate.getText().toString(); 
    int startkilometer; 
    switch (v.getId()) { 

    case R.id.bStartTur: 

     startkilometer = Integer.valueOf(etKm.getText().toString()); 


     Intent menu = new Intent("com.uniqueapps.runner.MENU"); 
     menu.putExtra("stopper", false); 
     menu.putExtra("startkm", startkilometer); 
     menu.putExtra("datoen", date); 
     startActivity(menu); 

     break; 
    } 

} 

} 

我停止類

public class Stop extends Main implements OnClickListener { 

Button bStop; 
EditText sqllocations, kilometer; 
int startkilometer; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.stop); 
    bStop = (Button) findViewById(R.id.bstopTur); 
    bStop.setOnClickListener(this); 
    sqllocations = (EditText) findViewById(R.id.locations); 
    kilometer = (EditText) findViewById(R.id.kilometer); 

    sqllocations.setText("Unknown"); 


} 

@Override 
public void onClick(View v) { 

    int startkilometer; 
    int slutkilometer; 
    startkilometer = getIntent().getIntExtra("startkm", 0); 
    date = getIntent().getStringExtra("datoen"); 

    // TODO Auto-generated method stub 

    switch(v.getId()){ 

    case R.id.bstopTur: 


     slutkilometer = Integer.valueOf(kilometer.getText().toString()); 



     int kortekm = (slutkilometer - startkilometer); 

     try{ 
     String locations = sqllocations.getText().toString(); 

     KilometerSQL entry = new KilometerSQL(this); 
     entry.open(); 
     entry.createEntry(date, kortekm, locations); 
     entry.close(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 

     Intent menu = new Intent("com.uniqueapps.runner.MENU"); 
      menu.putExtra("stopper", true); 
      startActivity(menu); 
      break; 
    } 
} 

} 

我的SQL類

public class KilometerSQL { 

public static final String KEY_ROWID = "date"; 
public static final String KEY_KILOMETER = "kilometer"; 
public static final String KEY_LOCATIONS = "locations"; 

private static final String DATABASE_NAME = "Kilometerdb"; 
private static final String DATABASE_TABLE = "kilometertable"; 
private static final int DATABASE_VERSION = 1; 

private DbHelper ourHelper; 
private final Context ourContext; 
private SQLiteDatabase ourDatabase; 

private static class DbHelper extends SQLiteOpenHelper{ 

    public DbHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 
       KEY_ROWID + " TEXT NOT NULL, " + 
       KEY_KILOMETER + " INTEGER, " + 
       KEY_LOCATIONS + " TEXT NOT NULL);" 


       ); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 
     db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); 
     onCreate(db); 
    } 


    } 

public KilometerSQL (Context c){ 
    ourContext = c; 
} 

public KilometerSQL open(){ 
    ourHelper = new DbHelper(ourContext); 
    ourDatabase = ourHelper.getWritableDatabase(); 
    return this; 
} 

public void close(){ 
    ourHelper.close(); 
} 

public long createEntry(String date, int kortekm, String locations) { 
    // TODO Auto-generated method stub 
    ContentValues cv = new ContentValues(); 
    cv.put(KEY_ROWID, date); 
    cv.put(KEY_KILOMETER, kortekm); 
    cv.put(KEY_LOCATIONS, locations); 
    return ourDatabase.insert(DATABASE_TABLE, null, cv); 
} 

public String getData() { 
    // TODO Auto-generated method stub 
    String [] columns = new String []{ KEY_ROWID, KEY_KILOMETER, KEY_LOCATIONS}; 
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null); 
    String result = ""; 

    int iDate = c.getColumnIndex(KEY_ROWID); 
    int iKilometer = c.getColumnIndex(KEY_KILOMETER); 
    int iLocations = c.getColumnIndex(KEY_LOCATIONS); 

    for (c.moveToFirst();!c.isAfterLast();c.moveToNext()){ 
     result = result + c.getString(iDate) + " " + c.getString(iKilometer) + " " + c.getString(iLocations) + "\n"; 
    } 

    return result; 
} 


} 

回答

1

您閱讀SharedPreferences的方式如下。

boolean silent = perefsInstance.getBoolean(「silentMode」,false); //第二個參數在這裏(false)是你可以設置任何你想要的默認值。

閱讀上SharedPreferences,你如何爲未初始化密鑰here

+0

設置默認值這應該是一個評論。 – Simon

+0

我的sharedPreferences錯了嗎? – Niller

+0

@Simon編輯爲答案。 –

相關問題