Как получить данные из намерения и сохранить в базе данных sqlite? - PullRequest
0 голосов
/ 07 августа 2020

Я новичок в разработке android, поэтому я столкнулся с этой проблемой в моем проекте.

В первом упражнении я сначала проверяю номер телефона, а после проверки номера, если пользователь новый , Я отправляю его на подписку. В форме регистрации я не хочу помещать поле телефона, вместо этого моя идея состоит в том, чтобы напрямую получить номер телефона из первого намерения и сохранить в базе данных, где я создал таблицу пользователей для хранения пользовательских данных из регистрации форма и телефон (в той же таблице).

Я создал вспомогательный класс базы данных sqlite и класс модели пользователя (конструктор, получатель и сеттеры)

Как я могу вставить или передать телефон в объекте класса модели пользователя и сохраните его в таблице пользователей в базе данных с другими данными из формы регистрации. Я попытался получить намерение телефона и передал его в качестве параметра при вызове класса UserModel, но он не работал. А может я что-то не так делаю. Пожалуйста помоги! Заранее спасибо

UserModel Class

package com.example.notes;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class SignUpActivity extends AppCompatActivity {

    EditText st_name, sc_name, board, grade, location;
    Button schoolBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_up);

        st_name = findViewById(R.id.studentId);
        sc_name = findViewById(R.id.schoolId);
        board = findViewById(R.id.boardId);
        grade = findViewById(R.id.gradeId);
        location = findViewById(R.id.locationId);
        schoolBtn = findViewById(R.id.schoolButton);

        schoolBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                final String phone = getIntent().getStringExtra("mob");

                UserModel userModel = new UserModel();

                try {

                    userModel = new UserModel(-1,
                            st_name.getText().toString(),
                            sc_name.getText().toString(),
                            phone,
                            board.getText().toString(),
                            grade.getText().toString(),
                            location.getText().toString());
                    Toast.makeText(SignUpActivity.this,
                            userModel.toString(),
                            Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    Toast.makeText(SignUpActivity.this, "Error adding customer", Toast.LENGTH_SHORT).show();
                }

                DatabaseHelper databaseHelper = new DatabaseHelper(SignUpActivity.this);
                boolean success = databaseHelper.addUser(userModel);
                Toast.makeText(SignUpActivity.this,
                        "Success= " + success,
                        Toast.LENGTH_SHORT).show();

                Intent profile_intent = new Intent(SignUpActivity.this,
                        ProfileActivity.class);
                startActivity(profile_intent);
            }
        });
    }
}

DatabaseHelper class
package com.example.notes;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String COL_SCHOOL_TABLE = "SCHOOL_TABLE";
    public static final String COL_ID = "ID";
    public static final String COL_STUDENT_NAME = "STUDENT_NAME";
    public static final String COL_SCHOOL_NAME = "SCHOOL_NAME";
    public static final String COL_PHONE = "PHONE";
    public static final String COL_BOARD = "BOARD";
    public static final String COL_GRADE = "GRADE";
    public static final String COL_LOCATION = "LOCATION";

    public DatabaseHelper(@Nullable Context context) {
        super(context, "Users.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String executeStatement = " CREATE TABLE " + COL_SCHOOL_TABLE + " (" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_STUDENT_NAME + " TEXT, " + COL_SCHOOL_NAME + " TEXT, " + COL_PHONE + " TEXT, " + COL_BOARD + " TEXT, " + COL_GRADE + " TEXT, " + COL_LOCATION + " TEXT)";
        db.execSQL(executeStatement);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL(" DROP TABLE IF EXISTS " + COL_SCHOOL_TABLE);
        onCreate(db);
    }

    public boolean addUser(UserModel userModel){
            SQLiteDatabase db = this.getWritableDatabase();
            ContentValues cv = new ContentValues();

            cv.put(COL_STUDENT_NAME, userModel.getName());
            cv.put(COL_SCHOOL_NAME, userModel.getSchoolName());
            cv.put(COL_PHONE, userModel.getPhone());
            cv.put(COL_BOARD, userModel.getBoard());
            cv.put(COL_GRADE, userModel.getGrade());
            cv.put(COL_LOCATION, userModel.getLocation());

            long insert = db.insert(COL_SCHOOL_TABLE, null, cv);

            if (insert == -1)
                return false;
            else
                return true;
    }

    public boolean checkPhone(String mobile) {
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "SELECT PHONE FROM SCHOOL_TABLE";
        Cursor cur = db.rawQuery(query, null);
        cur.moveToFirst();
        if (mobile == cur.getString(0))
            return true;
        else
            return false;
    }
}

1 Ответ

0 голосов
/ 07 августа 2020

Итак, согласно вашему вопросу, вы хотите передать номер телефона из первого действия в действие регистрации, вы можете просто передать его с помощью Intent.

В первом действии после проверки просто добавьте эту вещь

Intent i = new Intent(FirstActivity.this, SignupActivity.class);
i.putExtra("phone",phone.getText().toString().trim()); //add trim at back coz somtime it happen it takes the blank space also
startActivity(i);

В действии SignUp, прежде всего, получите пакет, а затем проверьте, является ли пакет нулевым или не похожим на этот.

Bundle bundle = getIntent().getExtras();
if(bundle != null){
String phoneNumber = bundle.getString("phone");
}

Рекомендуется проверить этот пакет исходит из предыдущего действия, является нулем или нет. Если мы не проверим это условие и если пакет окажется пустым, то ваше приложение не будет sh при загрузке этой страницы

Для справки вы можете использовать эту ссылку Передавать значение из одного действия в другое действие в android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...