-1

SharedPreferencesを使用して文字列を保存および取得する簡単なプログラムを作成しようとしています。アプリは正常に読み込まれますが、ボタンをクリックするとアプリが落ちます。何が悪いのかわかりません。コードは次のとおりです。

共有.java

package com.example.sharedpreferences;
import android.content.Context;
import android.content.SharedPreferences;
public class Shared {
    SharedPreferences prefe;
    SharedPreferences.Editor editor;
    Context mycontext;
    public Shared(Context context){
        mycontext = context;
        prefe = mycontext.getSharedPreferences("Preference", 0);
        editor = prefe.edit();
    }
    public void setpref(String name, String value){
        editor.putString(name, value);
        editor.commit();
    }
    public String getvalue(String name){
        return prefe.getString(name, "Nothing!");       
    }
}

MainActivity.java

package com.example.sharedpreferences;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
    Shared preferences;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        preferences = new Shared(getApplicationContext());  
    }

    public void btn_send(View button){
        TextView name = (TextView)findViewById(R.id.name2);
        TextView value = (TextView)findViewById(R.id.value2);
        String names = (String) name.getText();
        String values = (String) value.getText();
        preferences.setpref(names, values);
    }
    public void btn_read(View button){
        TextView name = (TextView)findViewById(R.id.name2);
        TextView value = (TextView)findViewById(R.id.value2);
        String names = (String) name.getText();
        String values = preferences.getvalue(names);
        value.setText(values);
    }
}

ありがとう!

4

3 に答える 3

0

使用する

value.getText().toString()

//優先クラス

public static class MyAppPref {

    public static final String SHARED_PREFERENCE        = "shared_preference";
    public static final String SP_TEXT_VALUE            = "sp_text_value";
    public static final String SP_TEXT_VALUE_DEFAULT    = "Nothing!";
    public static final int MODE_PRIVATE                = 0;

    public static SharedPreferences getPref(Context ctx){
        return ctx.getSharedPreferences(SHARED_PREFERENCE , MODE_PRIVATE);  
    }

    public static void saveTextValue(Context ctx, String value){
            getPref(ctx).edit().putString(SP_TEXT_VALUE, value).commit();
    }

    public static String getStoredTextvalue(Context ctx){
            return getPref(ctx).getString(SP_TEXT_VALUE, SP_TEXT_VALUE_DEFAULT);       
    }

}

//アクティビティクラス

//android:onClick="btn_write_pref"
public void btn_write_pref(View button){
    TextView value = (TextView)findViewById(R.id.textview_value);
    String values = (String) value.getText();
    MyAppPref.saveTextValue(this, value.getText().toString());
}
//android:onClick="btn_read_pref"
public void btn_read_pref(View button){
    TextView value = (TextView)findViewById(R.id.textview_value);
    value.setText(MyAppPref.getStoredTextvalue(this);
}
于 2013-01-18T20:23:08.527 に答える
0

コードを変更したところ、コードと同じように見えます。

第二の活動、

public class Second extends Activity{
TextView text1, text2;
Button send, read;
Shared preferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    preferences = new Shared(getApplicationContext()); 

    text1 = (TextView)findViewById(R.id.text1);
    text2 = (TextView)findViewById(R.id.text2);
    send = (Button)findViewById(R.id.button1);
    send.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            String names = (String) text1.getText();
            String values = (String) text2.getText();
            preferences.setpref(names, values+names);
        }
    });
    read = (Button)findViewById(R.id.button2);
    read.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            String names = (String) text1.getText();
            String values = preferences.getvalue(names);
            text2.setText(values);
        }
    });

}

}

上記と同じような設定クラス(shared.java)

于 2013-01-18T20:54:23.657 に答える
0

エラーは、Char シーケンスを String にキャストしたことが原因のようです。代わりに使用できますString superString = fromTextEdit.getText().toString();

于 2013-01-18T20:13:55.357 に答える