0

Android用のSQLiteをよりよく理解しようとしているところ、問題が発生しました。私のテスト プログラムには、テキスト ボックスとボタンしかありません。テキストボックスにテキストを入力してボタンをクリックすると、新しい「連絡先」(データベースクラス)が作成されます。

public class Home extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    DatabaseHandler db = new DatabaseHandler(this);
    String name = "";



    Button upButton = (Button) findViewById(R.id.button1);

    upButton.setOnClickListener(new View.OnClickListener() {            
        @Override
        public void onClick(View v, String name) {
            EditText editText = (EditText)findViewById(R.id.editText1);


            name = editText.getText().toString();
            TextView textView = (TextView)findViewById(R.id.textView2);
            textView.setText(name);


        }

    });
    db.addContact(new Contact(1,name));
}

}

クリックするとわかるように、テキストボックスにあるものはすべて名前として保存されます。addContact 関数呼び出しに送信できるようにしたいだけです。onClick 関数内で db クラスを使用する方法についても少し混乱しましたか? 理想的には、単に onClick 内で更新したいだけですか?

4

2 に答える 2

1

db.addContact(new Contact(1,name));コード行を に書いてみませんonClickListenerか? これを望まない場合は、 にメソッドを記述し、Activityから呼び出しますonClickListener

private void addContact(String name) {
    db.addContact(new Contact(1,name));
}

onCreate()メソッドで;

Button upButton = (Button) findViewById(R.id.button1);
upButton.setOnClickListener(new View.OnClickListener() {            
    @Override
    public void onClick(View v, String name) {
        EditText editText = (EditText)findViewById(R.id.editText1);

        name = editText.getText().toString();
        addContact(name);
    }

});
于 2013-05-14T19:39:06.363 に答える
0

これはいくつかの方法で実現できますが、そのうちの 1 つはdb変数をプライベートとして定義することです。

private DatabaseHandler mDatabaseHandler;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mDatabaseHandler = new DatabaseHandler(this);

    Button upButton = (Button) findViewById(R.id.button1);
    upButton.setOnClickListener(new View.OnClickListener() {            
        @Override
        public void onClick(View v, String name) {
            EditText editText = (EditText)findViewById(R.id.editText1);
            mDatabaseHandler .addContact(new Contact(1, editText.getText().toString()));
        }
    });
}
于 2013-05-14T19:42:43.050 に答える