как у вас две кнопки, которые сохраняются в одном файле данных в Android? - PullRequest
0 голосов
/ 06 февраля 2012

У меня настроено, поэтому, когда вы нажимаете одно из слов, оно добавляет 10 баллов, а другое - 5 баллов, но я хочу, чтобы оно было напечатано в том же текстовом представлении, однако я не уверен, как это сделать, потому чтоНасколько я понимаю, он хочет, чтобы я изменил настройки и редактор на «settings1» и «editor1», но если я это сделаю, он больше не будет набирать количество точек в «тестовом» TextView.Я надеюсь, что расширил его достаточно хорошо, спасибо за помощь

вот мой код

public class page1 extends Activity implements OnClickListener 
{

    TextView Q1A1;
    TextView Q1A2;
    TextView test;

    public static final String PREFS_NAME = "MyPrefsFile";
    public static final int testScore = 0;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);
        Q1A1 = (TextView) findViewById(R.id.Q1A1);
        Q1A2 = (TextView) findViewById(R.id.Q1A2);
        Q1A1.setOnClickListener(this);
        Q1A2.setOnClickListener(this);
        test = (TextView) findViewById(R.id.test);




        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        test.setText(""+settings.getInt("YourScore", 0));


    }

    public void onClick(View v) 
    {
        switch(v.getId())
        {
        case R.id.Q1A1:

            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putInt("YourScore", (testScore + 10));
            editor.commit();

            //Intent FinalScore = new Intent(this, FinalScore.class);
            //startActivity(FinalScore);
            break;
        case R.id.Q1A2:

            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putInt("YourScore", (testScore + 5));
            editor.commit();

            break;
        }   
    }   
}

1 Ответ

0 голосов
/ 06 февраля 2012

Операторы Case не создают новую область видимости, поэтому вы объявляете параметры переменных и редактора дважды.

Ваш код в двух инструкциях к регистру одинаков, за исключением количества добавляемых баллов. Почему бы не создать метод, который имеет весь общий код.

private void addPoints(int points) {
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putInt("YourScore", (testScore + points));
    editor.commit();       
}

public void onClick(View v) 
{
    switch(v.getId())
    {
    case R.id.Q1A1:
        addPoints(10);
        break;
    case R.id.Q1A2:
        addPoints(5);
        break;
    }   
}   
...