Передать счетчик на другое действие Android

Извините мой плохой английский

Я пытаюсь увеличить целочисленное значение во втором упражнении, когда нажимаю кнопку в первом занятии. Сначала я нажимаю на какую-то кнопку. После этого во втором упражнении число увеличивается, и его следует сохранить, чтобы отобразить в моем TextView, используя общие настройки.

Но то, что я пытаюсь сделать, не работает

  nao=(ImageView)rootView.findViewById(R.id.nao);
      nao.setOnClickListener(new View.OnClickListener()

    {
        public void onClick(View v)
        {



            Intent intent2 = new Intent(getActivity(), BancoList.class);
            intent2.putExtra("num", 1);

Второе занятие

 TextView tv;
SharedPreferences shre;
private int numero;

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

    tv=(TextView)findViewById(R.id.tv);

    shre = PreferenceManager.getDefaultSharedPreferences(this);
    String text = shre.getString("image_data", "");

    if( !text.equalsIgnoreCase("") ){
        tv.setText(text);
    }

Intent intent = getIntent();

    if(intent.getIntExtra("num", 1) == 1) {

        String present_value_string = tv.getText().toString();
        int present_value_int = Integer.parseInt(present_value_string);
        present_value_int++;

        tv.setText(String.valueOf(present_value_int));

        shre = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor edit=shre.edit();
        edit.putString("image_data", present_value_string);
        edit.commit();

Мой бревенчатый кот, @nolly-j

FATAL EXCEPTION: main

                                                                                  Process: com.example.wolney.tabhost, PID: 31184
                                                                             java.lang.ClassCastException: java.lang.String cannot be cast to      java.lang.Integer
                                                                                      at android.app.SharedPreferencesImpl.getInt(SharedPreferencesImpl.java:240)
                                                                                      at com.example.wolney.tabhost.fragments.FragmentUm$1.onClick(FragmentUm.java:50)
                                                                                       at android.view.View.performClick(View.java:4438)
                                                                                     at android.view.View$PerformClick.run(View.java:18422)
                                                                                     at android.os.Handler.handleCallback(Handler.java:733)
                                                                                       at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                        at android.os.Looper.loop(Looper.java:136)
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:5001)
                                                                                   at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                      at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                       at     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                                                      at dalvik.system.NativeStart.main(Native Method)

1 ответ

Решение

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

На первой странице действий сделайте это

добавить класс mamber

private SharedPreferences preferences;

затем в методе onCreate добавьте

nao = (ImageView)rootView.findViewById(R.id.nao);
    nao.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // retrieve the value of counter from Shared Preference
            preferences = PreferenceManager.getDefaultSharedPreferences(this);
            int counter = preferences.getInt("image_data", 0);
            counter++;

            // store the value of counter after incrementing it by 1
            SharedPreferences.Editor edit = preferences.edit();
            edit.putInt("image_data", counter);
            edit.commit();

            // move to the second activity page
            Intent intent2 = new Intent(getActivity(), BancoList.class);
            startActivity(intent2);
        }
    });

на второй странице активности используйте этот код. В этом случае вам не нужно хранить счетчик в намерении

// in the second activity page, get the stored counter value
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
int counter = preferences.getInt("image_data", 0);
tv.setText(String.valueOf(counter));

Надеюсь, поможет

Другие вопросы по тегам