亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 EditText 值從方法傳遞到同一 Activity 中 SQLiteOpenHelper

如何將 EditText 值從方法傳遞到同一 Activity 中 SQLiteOpenHelper

30秒到達戰場 2023-11-10 16:46:32
我有一個微調器,它選擇分支值并將其存儲在 onItemSelected 方法的 EditText 中。但我需要將編輯文本(分支)中顯示的值預先分配給同一活動中的 SqliteDatabase 插入操作方法。抱歉,我無法適當地提出問題。register.javapublic class register extends AppCompatActivity implements AdapterView.OnItemSelectedListener {    SQLiteOpenHelper openHelper;    SQLiteDatabase db;    Button _btnsignup;    EditText _txtFname, _txtLname, _txtpass, _txtemail, _txtrollno;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.register);        openHelper=new DatabaseHelper(this);        _btnsignup= findViewById(R.id.btn_signup);        _txtFname=findViewById(R.id.fname);        _txtLname=findViewById(R.id.lname);        _txtpass=findViewById(R.id.password);        _txtemail=findViewById(R.id.email);        _txtrollno=findViewById(R.id.rollno);        _btnsignup.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                db=openHelper.getWritableDatabase();                String fname=_txtFname.getText().toString();                String Lname= _txtLname.getText().toString();                String pwd= _txtpass.getText().toString();                String email= _txtemail.getText().toString();                String rollno= _txtrollno.getText().toString();                insertdata(Fname, Lname, pwd,email,rollno);                Toast.makeText(getApplicationContext(), "Registered Succesfully", Toast.LENGTH_LONG).show();            }        });我需要將 Editext 值從branch.setText(text2);上面String branch= _txtbranch.getText().toString();定義的傳遞到public void onclick. 但它說不能解析符號branch.getText().toString; 因為它是在另一個函數中聲明的。如果我在全局范圍內聲明它,則該getItemSlelected方法會顯示錯誤并且應用程序崩潰。請幫忙
查看完整描述

1 回答

?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

我建議進行以下更改:-

  • 將 spinner、adapter 和 _txtbranch 聲明為類變量

  • 設置視圖(spinner 和 _txtbranch)以及其他視圖

  • 可以選擇不覆蓋 onItemSelected 或 onNothingSelected,而是在按鈕的 onclick 中檢索所選項目(因此不需要分支 EditText)。

以下代碼包含上述內容,但請參閱注釋:-

public class register extends AppCompatActivity implements AdapterView.OnItemSelectedListener {


    SQLiteOpenHelper openHelper;

    SQLiteDatabase db;

    Button _btnsignup;

    Spinner spinner; //<<<<<<<<<< DECLARED HERE

    ArrayAdapter<CharSequence> adapter; //<<<<<<<<<< DECLARED HERE

    EditText _txtFname, _txtLname, _txtpass, _txtemail, _txtrollno, _txtbranch /* <<<<<<<<<< CHANGED  to add _txtbranch>>>>>>>> */;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.register);

        openHelper=new DatabaseHelper(this);


        _btnsignup= findViewById(R.id.btn_signup);

        _txtFname=findViewById(R.id.fname);

        _txtLname=findViewById(R.id.lname);

        _txtpass=findViewById(R.id.password);

        _txtemail=findViewById(R.id.email);

        _txtrollno=findViewById(R.id.rollno);

        _txtbranch=findViewById(R.id.branch); /* <<<<<<<<<< ADDED >>>>>>>>>> Alternately not needed if getting item directly from spinner*/

        spinner=findViewById(R.id.semester); /*<<<<<<<<<<< MOVED TO HERE spinner defined as a class variable */


        _btnsignup.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                db=openHelper.getWritableDatabase();

                String fname=_txtFname.getText().toString();

                String Lname= _txtLname.getText().toString();

                String pwd= _txtpass.getText().toString();

                String email= _txtemail.getText().toString();

                String rollno= _txtrollno.getText().toString();

                String branch = _txtbranch.getText().toString(); // code wanted BUT not needed if value obtained directly from the spinner

                //String branch = spinner.getSelectedItem().toString(); // ALTERNATIVE no need  _txtbranch duplicating selected value


                insertdata(Fname, Lname, pwd,email,rollno);

                Toast.makeText(getApplicationContext(), "Registered Succesfully", Toast.LENGTH_LONG).show();

                //Toast.makeText(view.getContext(),"Registered Succesfully", Toast.LENGTH_LONG).show(); // Alternative to previous line gets the context from the view

            }

        });


        adapter = ArrayAdapter.createFromResource(this, R.array.semester,android.R.layout.simple_spinner_item); //<<<<<<<<<< CHANGED

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(this); //<<<<<<<<<< not really needed as selected item can be retrieved directly from spinner

    }


    public void insertdata( String Fname, String Lname, String pwd, String email, String rollno) {

        ContentValues contentValues = new ContentValues();

        contentValues.put(DatabaseHelper.COL_2, Fname);

        contentValues.put(DatabaseHelper.COL_3, Lname);

        contentValues.put(DatabaseHelper.COL_4, pwd);

        contentValues.put(DatabaseHelper.COL_5, email);

        contentValues.put(DatabaseHelper.COL_6, rollno);

        long id = db.insert(DatabaseHelper.TABLE_NAME, null, contentValues);

    }


    // Not needed if retrieving value directly from spinner

    @Override

    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {


        String text=adapterView.getItemAtPosition(i).toString();

        //branch= (EditText)findViewById(R.id.branch);

        String text2=adapterView.getSelectedItem().toString();

        _txtbranch.setText(text2);

        Toast.makeText(adapterView.getContext(),text,Toast.LENGTH_SHORT).show();


    }


    // Not needed if retrieving value directly from spinner

    @Override

    public void onNothingSelected(AdapterView<?> adapterView) {


    }


    public void open_login(View view){

        startActivity(new Intent(getApplicationContext(),login.class));

    }

}

請注意,以上是原則上的代碼,尚未運行或測試,因此包含一些錯誤。


查看完整回答
反對 回復 2023-11-10
  • 1 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號