2016-03-02 128 views
0

对不起我的英语不好传递一个柜台到另一个活动的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) 
+0

共享偏好的内容可以是它必须是一个字符串一个int? – mikwee

+0

@mikwee是的。可能是一个int。我已经尝试过 –

+0

我没有真正实现你想要做的事情。你在第一个活动中设置了数字“intent2.putExtra(”num“,1);'并检查第二个活动if(intent.getIntExtra(”num“,1)== 1){'它总是真的。那么为什么要存储'image_data'和'num'。 – ELITE

回答

1

当你移动到第二个活动页面并返回到第一个活动,您的计数器变量可能会丢失其初始值。由于您使用的是共享偏好设置,因此您最好在点击后将其设置为移至第二个活动页面。

在第一个活动页面,这样做

添加类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)); 

希望它有助于

+0

did not work :(java.lang.String不能转换为java.lang.Integer at android.app.SharedPreferencesImpl.getInt(SharedPreferencesImpl.java:240) at com.example.wolney.tabhost.fragments.FragmentUm $ 1。 onClick(FragmentUm.java:53) at android.view.View.performClick(View.java:4438) –

+0

对不起,请在click事件方法中更改此行 - edit.putString(“image_data”,String.valueOf(currentCounter)) ; to edit.putInt(“image_data”,String.valueOf(currentCounter)); – Inducesmile

+0

这个“currentCounter”我写的只是“counter”,对吗?我删除了“String.valueOf”,因为它必须是整数值。它不工作:(( –

相关问题