Передать счетчик на другое действие 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));
Надеюсь, поможет