2013-09-26 277 views
0

在LogoQuiz遊戲中,當我們輸入正確的答案時,答案會顯示,並且活動會變得更加鬆散。每當我們回到那個屏幕時,都會顯示相同的內容。這是如何完成的?有誰能提供一個例子嗎?保存和恢復實例

public class Activity3 extends Activity implements OnClickListener { 

private Button Hint1; 
private Button Hint2; 


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

    Hint1 = (Button) findViewById(R.id.Hint1); 
    Hint2 = (Button) findViewById(R.id.Hint2); 
    Hint1.setOnClickListener(this); 
    Hint2.setOnClickListener(this); 
    Hint2.setEnabled(false); 

    final EditText input = (EditText) findViewById(R.id.answer); 

    final TextView display = (TextView) findViewById(R.id.response); 

    input.setOnKeyListener(new OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
         (keyCode == KeyEvent.KEYCODE_ENTER)) { 

      String check = input.getText().toString().replace(" ",""); 
      if(check.equalsIgnoreCase("good")){ 


       display.setText("correct"); 
       input.setEnabled(false); 
      } else{ 
       display.setText("Wrong"); 
      } 
      return true;       
      } 
      return false;} 

        }); 

    } 



@Override 
public void onClick(View view) { 
    switch(view.getId()){ 
    case R.id.Hint1: 
     showOneButtonDialog(); 
     break; 
    case R.id.Hint2: 
     showTwoButtonDialog(); 
     break; 

}} 
private void showOneButtonDialog() 
{ 
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); 
    dialogBuilder.setTitle(" Hint 1 "); 
    Hint2.setEnabled(true); 
    dialogBuilder.setMessage(" This is your Hint1"); 
    AlertDialog alertDialog = dialogBuilder.create(); 
    alertDialog.show(); 

} 
private void showTwoButtonDialog() 
{ 
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); 
    dialogBuilder.setTitle(" Hint 2 "); 
    dialogBuilder.setMessage("This is your Hint2 "); 
    AlertDialog alertDialog = dialogBuilder.create(); 
    alertDialog.show(); 

} 
} 
+1

你的問題不是很清楚。你可以擴大,顯示一些代碼... – Szymon

+0

我已經添加了代碼。現在,當用戶在Edittext中輸入good時,將顯示「正確」,並且我希望它永遠如此 – user2819290

回答

0

應保存您的instace在SharedPreferences

例如:您需要保存字符串變量res這樣做

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(YourActivityName.this); 

Editor edit1 = remembermepref.edit(); 
       edit1.putString("result_key",youredittext.getText().toString); 
       edit1.commit(); 

要檢索的onCreate你的結果()使用下列內容:

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(YourActivityName.this); 
String res1 = pref.getString("result_key"); 
if(res1.eqauls("correct") 
{ 
youredittext.setText("correct"); 
} 

現在用你的結果存儲在res1,你想要的方式。最重要的是檢查你是否使用相同的密鑰恢復以及WS店的價值SharedPreference

希望這有助於..

+0

我是Android新手... – user2819290

+0

我應該在哪裏粘貼上面的代碼 – user2819290

+0

我編輯了我的代碼..即時通訊無法像「現在當用戶在EditText中輸入好內容」那樣難以忍受,正確的「會顯示出來,我希望它永遠像這樣 - 」這意味着什麼? – mananjani

0

在你的活動:

private String question; 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    outState.putString("question", question); 
    super.onSaveInstanceState(outState); 
} 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

      if (savedInstanceState != null) { 
       question = savedInstanceState.getString(
       "question"); 
      } 

} 

編輯:

至於要保存perminately字符串:共享p

例節省串引用並在應用程序的任何位置再次檢索它。

public class PreferencesData { 

    public static void saveString(Context context, String key, String value) { 
     SharedPreferences sharedPrefs = PreferenceManager 
       .getDefaultSharedPreferences(context); 
     sharedPrefs.edit().putString(key, intValue).commit(); 
    } 

    public static int getString(Context context, String key) { 
     SharedPreferences sharedPrefs = PreferenceManager 
       .getDefaultSharedPreferences(context); 
     return sharedPrefs.getString(key, ""); 
    } 
} 

用法:

PreferencesData.saveString(context, "mynote", "buy more stuff"); 
// retrieve 
String note = PreferencesData.getString(context, "mynote"); 

使用此功能可以節省暫停字符串,並重新創建它的onCreate,或在任何你需要

同樣的方法可以很容易地用於信息其他簡單的類型。

你的情況:

@Override 
protected void onPause() { 
    PreferencesData.saveString(this, "answer", input.getText().toString()); 
    super.onPause(); 
} 

而在的onCreate():

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

    Hint1 = (Button) findViewById(R.id.Hint1); 
    Hint2 = (Button) findViewById(R.id.Hint2); 
    Hint1.setOnClickListener(this); 
    Hint2.setOnClickListener(this); 
    Hint2.setEnabled(false); 

    final EditText input = (EditText) findViewById(R.id.answer); 

    // set to empty string if no value is saved yet 
    input.setText(PreferencesData.getString(this, "answer")); 

    .... 
} 
+0

已被更新回答。 – cYrixmorten

+0

當我回到屏幕時,OnkeyListener必須自動運行並顯示結果 – user2819290

+0

提供符合您的代碼的示例 – cYrixmorten