Androidプログラムで名前とE-mailを記憶する方法

このQ&Aのポイント
  • Androidプログラムについて、名前とE-mailを記憶するための簡単なプログラムの作り方を教えてください。
  • プリファレンスを使用して名前とE-mailを記憶するAndroidプログラムの作成方法を教えてください。
  • Androidアプリでテキストに入力された名前とE-mailを記憶する方法を解説してください。
回答を見る
  • ベストアンサー

プログラムについて

androidのプログラムになりますが、教えていただきたくお願いします。 テキストに名前とE-mailを書いてボタンを押すと記憶されるプリファレンスの簡単なプログラムを書いていますが、うまく記憶できません。 ひとつのクラスにすれば問題なく記憶されるのですが、仕様でわざと2つのファイルに分けています。 お手数ですが、どなたか教えてください。 //メインのクラス(名前とE-mailを書いてもらう) public class ReiActivity extends Activity implements LocationListener,View.OnClickListener{ EditText editText1; EditText editText2; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); editText1=(EditText)this.findViewById(R.id.editText1); editText1.setOnClickListener(this); editText2=(EditText)this.findViewById(R.id.editText2); editText2.setOnClickListener(this); if(v==button3){ String n=editText1.getText().toString(); String m=editText2.getText().toString(); Preference preference=new Preference(n,m); preference.prefernces(); Toast.makeText(ReiActivity.this, "登録しました。",   Toast.LENGTH_LONG).show();} //ここから別ファイルの別クラス(記憶させるプリファレンス) public class Preference extends Activity{ String n; String m; public Preference(String n,String m){ this.n=n; this.m=m; } public void prefernces(){ //下の行でエラーが起こる SharedPreferences pref=getSharedPreferences("profLog", MODE_PRIVATE); SharedPreferences.Editor editor=pref.edit(); editor.putString("Tel",n); editor.putString("E_mail",m); editor.commit(); } }

  • Java
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

Activity は android の画面のようなものなので、自分で new Preference() とかしてもうまく動きません。 見たところ Preference は Activity を継承する必要はなさそうですね。preference を保存する機能だけを別クラスに分離したいなら、new Preference(this, name, email); のように呼び出すがわの activity を Preference クラスにわたしてやればいいんじゃね? また、Preference#preferences() で保存の動作をさせていますが、わかりにくいです。この名前だと、保存した preference の一覧を参照するような機能を想像してしまいます。

elkheart
質問者

お礼

ありがとうございます。 無事解決しました。 またよろしくお願いいたします。

関連するQ&A

  • Android JAVAへでの質問です

    (←※この部分!) の意味がわからないのでどなたか教えていただけないでしょうか? private EditText edit1; ですが、なぜ private がついているのでしょうか?なくても動きましたが何か意味があるのでしょうか? そしてどうして、この子はここにいるのでしょうか? Button btn1 と一緒に仲良くいてもいいんじゃないでしょうか? ================ import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.view.*; import android.view.View.OnClickListener; import android.widget.*; public class Test2Activity extends Activity { private EditText edit1;(←※この部分!) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); edit1 = (EditText)this.findViewById(R.id.EditText1); Button btn1 = (Button)this.findViewById(R.id.button1); btn1.setOnClickListener(new MyClickA()); } class MyClickA implements OnClickListener { public void onClick(View view){ Editable e = edit1.getText(); int n = Integer.parseInt(e.toString()); Toast toast = Toast.makeText(getApplicationContext(), "数値=" + n, Toast.LENGTH_SHORT); toast.show(); } } }

    • ベストアンサー
    • Java
  • nullpointexceptionについて

    プログラミング初心者です。 エラーが全くわかりません。 ボタンを押すと、リストビューに移動するというものなんですが、ボタンを押すとnullpointexceptionが出ます。 最後の、et.setText(str);でエラーになっているようなんですが、 お分かりになる方いらっしゃいますか・・・? よろしくお願いいたします。 public class MainActivity extends Activity { EditText text_naiyou =null; Button save=null; Button buck=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); save=(Button)findViewById(R.id.save); buck=(Button)findViewById(R.id.buck); text_naiyou=(EditText)findViewById(R.id.text_naiyou); save.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { EditText et = (EditText)findViewById(R.id.text_naiyou); String str = et.getText().toString(); Intent intent = new Intent(); intent.setClass(getApplicationContext(), ListActivity.class); String pkg = getPackageName(); intent.putExtra(pkg + ".input",str); startActivity(intent); public class ListActivity extends Activity { EditText text_naiyou =null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); Intent intent = getIntent(); String pkg = getPackageName(); String str = intent.getStringExtra(pkg + ".input"); EditText et = (EditText)findViewById(R.id.text_naiyou); et.setText(str);

  • Android開発でお聞きしたいことがあります。

    プリファレンスを使用してActivity間でデータの受け渡しをしたいのですが、 layoutのxmlファイルで定義したid( EditText→@+id/a ) を取得して(EditText edit =(EditText)findViewByid(R.id.a); ) editをプリファレンスに書き込みしたいです。 プリファレンスを定義した後、 editor.putString("data1",edit); でエラーが出てしまいます。 私では editにid aを取得し、String型としてプリファレンスに書き込みたいのですが、 間違いなどありましたらご指摘、お願いします。 質問させていただいて申し訳ないのですが、詳しい修正方法もできたらお願いします。

  • 2つのEditTextに同じ関数を使いたい

    お世話になります。 JAVA eclipseでアプリを作成しています。 下記のソースで、onCreate時に、 (5行目)HogeText1に対して、「override:onCreateActionMode」で 処理を追加しています。 この処理を,HogeText2に対しても同じ処理を入れたいたのですが、 どのようにすれば、綺麗にかけるでしょうか? ※現在は、 final EditText editText = (EditText) findViewById(R.id.HogeText1); 以下の文を final EditText editText = (EditText) findViewById(R.id.HogeText2); にして、テキストビューの数、繰り返しています。 何卒宜しくお願いします。 -------------------------------- public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText editText = (EditText) findViewById(R.id.HogeText1); editText.setCustomSelectionActionModeCallback(new ActionMode.Callback() { @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { menu.removeItem(android.R.id.paste); menu.removeItem(android.R.id.cut); menu.removeItem(android.R.id.copy); } }; ------------------------------------------

    • ベストアンサー
    • Java
  • androidでアプリを作ろうとしてるのですが

    package com.example.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; public class InOutTest extends Activity { /** Called when the activity is first created. */ public TextView txtInfo; public EditText edtText; public Button outputbutton; public TextView txtResult; public TextView txtjudge; public String strInch; public String gettext; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //レイアウト作成 ここから LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //レイアウトを見えるようにする //レイアウト作成 ここまで //GUI部品作成 ここから // ラベル txtInfo = new TextView(this); txtInfo.setText("check"); strInch = ("check"); layout.addView(txtInfo); // エディタ edtText = new EditText(this); layout.addView(edtText); // ボタン txtResult = new Button(this); txtResult.setText("same or difference"); layout.addView(txtResult); // 結果表示用ラベル txtjudge = new TextView(this); txtjudge.setText("check"); layout.addView(txtjudge); //GUI部品作成 ここまで txtResult.setOnClickListener(new OnClickListener(){ public void onClick(View v) { gettext = edtText.toString(); if (strInch==gettext){ txtjudge.setText("ok"); } }; }); }} 上のプログラムで strInchに入ってるデータとgettextで取得した文章を比較して同じなら txtjudgeにOKと引き渡して表示させたいのですがうまく動きません 何方かどうぞよろしくお願い致します

    • ベストアンサー
    • Java
  • このプログラムについて質問したいのですが

    public class InOutTest extends Activity { /** Called when the activity is first created. */ public TextView txtInfo; public EditText edtText; public Button outputbutton; public TextView txtResult; public TextView txtjudge; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //レイアウト作成 ここから LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //レイアウトを見えるようにする //レイアウト作成 ここまで //GUI部品作成 ここから // ラベル txtInfo = new TextView(this); txtInfo.setText("check spell same or not:"); layout.addView(txtInfo); // エディタ edtText = new EditText(this); layout.addView(edtText); // ボタン txtResult = new Button(this); txtResult.setText("same or difference"); layout.addView(txtResult); // 結果表示用ラベル txtjudge = new TextView(this); txtjudge.setTextSize(30f); layout.addView(txtjudge); //GUI部品作成 ここまで txtResult.setOnClickListener(new OnClickListener(){ public void onClick(View v) { String strInch = ""; if (edtText==txtInfo) strInch = "typed as same"; txtResult.setText(strInch); } }); } } txtResultに文章を引き渡して表示させたいのですが やり方が分かりません お時間のある方でいいので どなたかよろしければ教えてください

    • ベストアンサー
    • Java
  • EditText型をint型に変換し通貨表示に

    ■やりたいこと: AndroidのEditTextに、ユーザがインプットメソッドを用いて数字を入力した際、その値を 1. int型変数と、String型変数に代入(2つの型で、後々使えるよう変数内にデータ保持したい) 2. EditText(スマホ画面)には、入力後「通貨」書式で表示したい 「通貨」書式とは、EditTextに「1000と入力したら、1,000」のように、位取りして表示をしたいという意味です。 下記コードだと、アプリが起動直後に落ちてしまいます。 実行後に表示されるLogCatには「FATAL EXCEPTION」と書かれています。 ■レイアウト(xml:activity_main) <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number"//画面から数値のみ:入力制限 android:digits="0123456789"/> ■クラスファイル public class MainActivity extends Activity implements OnFocusChangeListener { EditText editText; String str; String str2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //editText1=layoutのEditTextのid EditText editText = (EditText)findViewById(R.id.editText1); editText.setOnFocusChangeListener(this); str = editText.getText().toString(); //EditTextに入力された数字を取得 int i = Integer.parseInt(str); //Integerクラスの値=整数値を取得★ NumberFormat numFormat = NumberFormat.getCurrencyInstance(); //通貨フォーマット str2 = numFormat.format(i); //整数値を通貨フォーマットに } @Override public void onFocusChange(View arg0, boolean getFocus) { if (getFocus){ editText.setText(str2); //EditTextにセット(表示) } } } ==================================================================== 原因は「★」の部分のようです。ここを通過するととデバッガが落ちます。 (EditTextに半角数字を入れても、それがint型の保証がないからでしょうか) 上の「やりたいこと」を実現するには、どこを修正すればよいでしょうか。

  • 二つのコードを繋げたい

    eclipseでandroidプログラミングをしている超初心者です。 いろいろ試しましたがうまくいかないので力を貸してください。 コード1 final String TAG = "DialogTest"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ((Button)findViewById(R.id.button1)) .setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { new AlertDialog.Builder(MainActivity.this) .setTitle("Hello, AlertDialog!") .setPositiveButton( "Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .setNegativeButton( "No", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .show(); } }); } } コード2 EditText mEditText_number = null; LinearLayout mLinearLayout_no_button = null; Button mButton_dial = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mLinearLayout_no_button = new LinearLayout(this); mEditText_number = new EditText(this); mEditText_number.setText("117"); mLinearLayout_no_button.addView(mEditText_number); mButton_dial = new Button(this); mButton_dial.setText("電話をかける"); mLinearLayout_no_button.addView(mButton_dial); mButton_dial.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { performDial(); } }); setContentView(mLinearLayout_no_button); } public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_CALL) { performDial(); return true; } return false; } public void performDial(){ if(mEditText_number!=null){ try { startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + mEditText_number.getText()))); } catch (Exception e) { e.printStackTrace(); } } } } AlertDialogを表示するコード1で”YES”を押したらコード2を使って電話がかかるようにしたいです。 回答よろしくお願いします。

  • EditTextからフォーカスを外す処理

    Androidのプログラミングで、EditText(入力widget)をExcelのセルのように5つ並べて計算させる画面があります。 XML上のEditTextは5つあり、下記はボタン[btnUpdate]をクリックしたとき、5つめのEditTextにフォーカスが1度あたる(カーソルが入る)ようになっています。 EditText editText5 = (EditText)findViewById(R.id.editText5); editText5.setOnFocusChangeListener(this); Button btnUpdate = (TextView)findViewById(R.id.btnUpdate); btnUpdate.setOnClickListener(this); btnUpdate.setOnFocusChangeListener(this); //以下、メソッド部 ==========================/ @Override public void onClick(View v) { if(v == btnUpdate) { editText5.requestFocus(); // EditText5にフォーカスをあてる    (EditText同士の計算処理) //* ここにフォーカスが外れる記述をしたい */ } } カーソルがeditText5に入った状態(フォーカスがあたったまま)になると、editText1~5の数字が計算されるようになっています。 カーソルが点滅した状態で処理が終わるのですが、処理後はカーソル点滅をやめたいので、editTextからフォーカスをはずしたいと思っています。 質問:カーソルが消える(処理後フォーカスがすべてのEditTextから外れる)状態にする記述(requestFocus();の逆のメソッド)がわかりません。 よろしくお願いします。

  • androidプログラミングについての質問

    このプログラムについて質問したいのですが public class InOutTest extends Activity { /** Called when the activity is first created. */ public TextView txtInfo; public EditText edtText; public Button outputbutton; public TextView txtResult; public TextView txtjudge; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //レイアウト作成 ここから LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //レイアウトを見えるようにする //レイアウト作成 ここまで //GUI部品作成 ここから // ラベル txtInfo = new TextView(this); txtInfo.setText("check spell same or not:"); layout.addView(txtInfo); // エディタ edtText = new EditText(this); layout.addView(edtText); // ボタン txtResult = new Button(this); txtResult.setText("same or difference"); layout.addView(txtResult); // 結果表示用ラベル txtjudge = new TextView(this); txtjudge.setTextSize(30f); layout.addView(txtjudge); //GUI部品作成 ここまで txtResult.setOnClickListener(new OnClickListener(){ public void onClick(View v) { String strInch = ""; if (edtText==txtInfo) strInch = "typed as same"; txtResult.setText(strInch); } }); } } txtResultに文章を引き渡して表示させたいのですが やり方が分かりません お時間のある方でいいので どなたかよろしければ教えてください