在onClick上传递字符串var

时间:2013-05-14 19:30:03

标签: java android

我正在努力更好地了解SQLite for android并遇到了一个问题。我的测试程序只有一个文本框和按钮。当您在文本框中输入文本并单击按钮时,我希望它创建一个新的“联系人”(数据库类)。

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中更新它,还是我?

2 个答案:

答案 0 :(得分: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);
    }

});

答案 1 :(得分:0)

这可以通过多种方式实现,其中一种方法是将您的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()));
        }
    });
}