2016-03-02 63 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」,因爲它必須是整數值。它不工作:(( –

相關問題