0
package com.example.shared;

import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
Button bshared;
TextView tv;
String x;
SharedPreferences pref;
Editor edit;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bshared = (Button) findViewById(R.id.bshared);
    tv = (TextView) findViewById(R.id.tv);

    tv.setText(x);
    bshared.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
                  pref=getApplicationContext().getSharedPreferences("details",1);
            edit = pref.edit();
            edit.clear();
            edit.putString("name", "These are new values");
            edit.commit();
            x = pref.getString("name", "");

        }
    });

}
}

ボタンをクリックすると、textviewの値が「これらは新しい値です」に変更される必要がありますが、それは発生していません。誰かが私の間違いを見つけるのを手伝ってくれますか?

4

2 に答える 2

2

textviewテキストを変更する前に、テキストを設定しています。したがって、には反映されませんtextviewonclick文字列の値を変更した後、この行をメソッドの最後に追加します。

tv.setText(x);

編集:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bshared = (Button) findViewById(R.id.bshared);
    tv = (TextView) findViewById(R.id.tv);

    pref=getApplicationContext().getSharedPreferences("details",1);
    x = pref.getString("name", "");

    tv.setText(x);
    bshared.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            edit = pref.edit();
            edit.clear();
            edit.putString("name", "These are new values");
            edit.commit();
            x = pref.getString("name", "");
            tv.setText(x);


        }
    });

}
}
于 2012-09-20T06:19:49.613 に答える
2

オン クリック メソッドでは、以下のコードのように値を textview に設定する必要があります。

pref=getApplicationContext().getSharedPreferences("details",1);
x = pref.getString("name", "");
tv.setText(x);
bshared.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) 
        {
            edit = pref.edit();
            edit.clear();
            edit.putString("name", "These are new values");
            edit.commit();
            x = pref.getString("name", "");
            tv.setText(x);
        }
    });
于 2012-09-20T06:25:08.840 に答える