2013-09-26 321 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