Skip to content
🤔prompts chat🧠
🔍
question:После успешного входа или регистрации ты должен сделать переменную public static int profile_num равной id этого пользователя : package com.example.myapp_2.Data.register; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; import com.example.myapp_2.R; import com.example.myapp_2.UI.view.fragments.FirstFragment; public class LoginFragment extends Fragment { public static int profile_num ; private EditText editTextEmail, editTextPassword; private Button buttonLogin; private UserDAO userDAO; public LoginFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); userDAO = new UserDAO(getActivity()); userDAO.open(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.login, container, false); getActivity().findViewById(R.id.bottomNavigationView).setVisibility(View.GONE); editTextEmail = view.findViewById(R.id.editTextEmail); editTextPassword = view.findViewById(R.id.editTextPassword); buttonLogin = view.findViewById(R.id.buttonLogin); buttonLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String email = editTextEmail.getText().toString(); String password = editTextPassword.getText().toString(); if (userDAO.login(email, password)) { Toast.makeText(getActivity(), "Login successful", Toast.LENGTH_SHORT).show(); // переход на другой фрагмент FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.nav_container, new FirstFragment()); transaction.addToBackStack(null); transaction.commit(); } else { Toast.makeText(getActivity(), "Invalid email or password", Toast.LENGTH_SHORT).show(); } } }); Button buttonReturn = view.findViewById(R.id.buttonReturn); buttonReturn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.nav_container, new RegistrationFragment()); transaction.addToBackStack(null); transaction.commit(); } }); return view; } @Override public void onDestroy() { super.onDestroy(); userDAO.close(); } } package com.example.myapp_2.Data.register; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; import com.example.myapp_2.R; import com.example.myapp_2.UI.view.fragments.FirstFragment; import java.util.List; public class RegistrationFragment extends Fragment { private EditText editTextName, editTextEmail, editTextPassword; private Button buttonRegister_1; private UserDAO userDAO; public RegistrationFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); userDAO = new UserDAO(getActivity()); userDAO.open(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.refister, container, false); getActivity().findViewById(R.id.bottomNavigationView).setVisibility(View.GONE); editTextName = view.findViewById(R.id.editTextName); editTextEmail = view.findViewById(R.id.editTextEmail); editTextPassword = view.findViewById(R.id.editTextPassword); buttonRegister_1 = view.findViewById(R.id.buttonRegister_1); buttonRegister_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name = editTextName.getText().toString(); String email = editTextEmail.getText().toString(); String password = editTextPassword.getText().toString(); long rowID = userDAO.register(name, email, password); if (rowID > 0) { Toast.makeText(getActivity(), "Registration successful", Toast.LENGTH_SHORT).show(); getFragmentManager().popBackStack(); FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.nav_container, new FirstFragment()); transaction.addToBackStack(null); transaction.commit(); } else if (rowID == -1) { Toast.makeText(getActivity(), "Invalid email", Toast.LENGTH_SHORT).show(); // вывод всех пользователей в лог List<User> users = userDAO.getAllUsers(); Log.d("UserDatabase", "All users:"); for (User user : users) { Log.d("UserDatabase", user.toString()); } } else { Toast.makeText(getActivity(), "Registration failed", Toast.LENGTH_SHORT).show(); } } }); Button buttonLogin_1 = view.findViewById(R.id.buttonLogin_1); buttonLogin_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.nav_container, new LoginFragment()); transaction.addToBackStack(null); transaction.commit(); } }); Button buttonExit = view.findViewById(R.id.buttonExit); buttonExit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getFragmentManager().popBackStack(); FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.nav_container, new FirstFragment()); transaction.addToBackStack(null); transaction.commit(); } }); return view; } @Override public void onDestroy() { super.onDestroy(); userDAO.close(); } } package com.example.myapp_2.Data.register; public class User { private int id; private String name; private String email; private String password; public User() { } public User(int id, String name, String email, String password) { this.id = id; this.name = name; this.email = email; this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User {id=" + id + ", name='" + name + "‘, email=’" + email + "‘, password=’" + password + "'}"; } }package com.example.myapp_2.Data.register; import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import java.util.ArrayList; import java.util.List; public class UserDAO { private SQLiteDatabase database; private UserDatabaseHelper dbHelper; public UserDAO(Context context) { dbHelper = new UserDatabaseHelper(context); } public void open() throws SQLException { database = dbHelper.getWritableDatabase(); } public void close() { dbHelper.close(); } public long register(String name, String email, String password) { if (!android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) { return -1; // email не соответствует формату } Cursor cursor = database.query(UserDatabaseHelper.TABLE_USERS, new String[]{UserDatabaseHelper.COLUMN_EMAIL}, UserDatabaseHelper.COLUMN_EMAIL + " = ?", new String[]{email}, null, null, null, null); if (cursor != null && cursor.getCount() > 0) { // если уже есть пользователь с такой почтой cursor.close(); return -2; } ContentValues values = new ContentValues(); values.put(UserDatabaseHelper.COLUMN_NAME, name); values.put(UserDatabaseHelper.COLUMN_EMAIL, email); values.put(UserDatabaseHelper.COLUMN_PASSWORD, password); return database.insert(UserDatabaseHelper.TABLE_USERS, null, values); } public boolean login(String email, String password) { Cursor cursor = database.query(UserDatabaseHelper.TABLE_USERS, new String[]{UserDatabaseHelper.COLUMN_EMAIL, UserDatabaseHelper.COLUMN_PASSWORD}, UserDatabaseHelper.COLUMN_EMAIL + " = ? AND " + UserDatabaseHelper.COLUMN_PASSWORD + " = ?", new String[]{email, password}, null, null, null, null); if (cursor != null && cursor.getCount() > 0) { cursor.close(); return true; } else { return false; } } @SuppressLint("Range") public List<User> getAllUsers() { List<User> users = new ArrayList<>(); Cursor cursor = database.query(UserDatabaseHelper.TABLE_USERS, new String[]{UserDatabaseHelper.COLUMN_ID, UserDatabaseHelper.COLUMN_NAME, UserDatabaseHelper.COLUMN_EMAIL, UserDatabaseHelper.COLUMN_PASSWORD}, null, null, null, null, null); if (cursor != null && cursor.moveToFirst()) { do { User user = new User(); user.setId(cursor.getInt(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_ID))); user.setName(cursor.getString(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_NAME))); user.setEmail(cursor.getString(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_EMAIL))); user.setPassword(cursor.getString(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_PASSWORD))); users.add(user); } while (cursor.moveToNext()); cursor.close(); } return users; } public User getUserById(int id) { SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query(UserDatabaseHelper.TABLE_USERS, new String[]{UserDatabaseHelper.COLUMN_ID, UserDatabaseHelper.COLUMN_NAME, UserDatabaseHelper.COLUMN_EMAIL, UserDatabaseHelper.COLUMN_PASSWORD}, UserDatabaseHelper.COLUMN_ID + "= ?", new String[]{String.valueOf(id)}, null, null, null, null); if (cursor != null) cursor.moveToFirst(); @SuppressLint("Range") User user = new User(cursor.getInt(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_ID)), cursor.getString(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_NAME)), cursor.getString(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_EMAIL)), cursor.getString(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_PASSWORD))); cursor.close(); return user; } public void updateUser(User user) { ContentValues values = new ContentValues(); values.put(UserDatabaseHelper.COLUMN_NAME, user.getName()); values.put(UserDatabaseHelper.COLUMN_EMAIL, user.getEmail()); values.put(UserDatabaseHelper.COLUMN_PASSWORD, user.getPassword()); database.update(UserDatabaseHelper.TABLE_USERS, values, UserDatabaseHelper.COLUMN_ID + " = ?", new String[]{String.valueOf(user.getId())}); } } package com.example.myapp_2.Data.register; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class UserDatabaseHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "UserDatabase"; public static final String TABLE_USERS = "users"; public static final String COLUMN_ID = "_id"; public static final String COLUMN_NAME = "name"; public static final String COLUMN_EMAIL = "email"; public static final String COLUMN_PASSWORD = "password"; public UserDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String CREATE_USERS_TABLE = "CREATE TABLE " + TABLE_USERS + "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME + " TEXT," + COLUMN_EMAIL + " TEXT," + COLUMN_PASSWORD + " TEXT" + ")"; db.execSQL(CREATE_USERS_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS); onCreate(db); } }

answer:After successful login or registration, you should set the variable public static int profile_num equal to the id of that user: ``` package com.example.myapp_2.Data.register; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; import com.example.myapp_2.R; import com.example.myapp_2.UI.view.fragments.FirstFragment; public class LoginFragment extends Fragment { public static int profile_num ; private EditText editTextEmail, editTextPassword; private Button buttonLogin; private UserDAO userDAO; public LoginFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); userDAO = new UserDAO(getActivity()); userDAO.open(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.login, container, false); getActivity().findViewById(R.id.bottomNavigationView).setVisibility(View.GONE); editTextEmail = view.findViewById(R.id.editTextEmail); editTextPassword = view.findViewById(R.id.editTextPassword); buttonLogin = view.findViewById(R.id.buttonLogin); buttonLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String email = editTextEmail.getText().toString(); String password = editTextPassword.getText().toString(); if (userDAO.login(email, password)) { Toast.makeText(getActivity(), "Login successful", Toast.LENGTH_SHORT).show(); // set profile_num to the user's id profile_num = userDAO.getUserByEmail(email).getId(); // go to another fragment FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.nav_container, new FirstFragment()); transaction.addToBackStack(null); transaction.commit(); } else { Toast.makeText(getActivity(), "Invalid email or password", Toast.LENGTH_SHORT).show(); } } }); Button buttonReturn = view.findViewById(R.id.buttonReturn); buttonReturn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.nav_container, new RegistrationFragment()); transaction.addToBackStack(null); transaction.commit(); } }); return view; } @Override public void onDestroy() { super.onDestroy(); userDAO.close(); } } ``` ``` package com.example.myapp_2.Data.register; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; import com.example.myapp_2.R; import com.example.myapp_2.UI.view.fragments.FirstFragment; import java.util.List; public class RegistrationFragment extends Fragment { private EditText editTextName, editTextEmail, editTextPassword; private Button buttonRegister_1; private UserDAO userDAO; public RegistrationFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); userDAO = new UserDAO(getActivity()); userDAO.open(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.refister, container, false); getActivity().findViewById(R.id.bottomNavigationView).setVisibility(View.GONE); editTextName = view.findViewById(R.id.editTextName); editTextEmail = view.findViewById(R.id.editTextEmail); editTextPassword = view.findViewById(R.id.editTextPassword); buttonRegister_1 = view.findViewById(R.id.buttonRegister_1); buttonRegister_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name = editTextName.getText().toString(); String email = editTextEmail.getText().toString(); String password = editTextPassword.getText().toString(); long rowID = userDAO.register(name, email, password); if (rowID > 0) { Toast.makeText(getActivity(), "Registration successful", Toast.LENGTH_SHORT).show(); // set profile_num to the newly registered user's id profile_num = userDAO.getUserByEmail(email).getId(); getFragmentManager().popBackStack(); FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.nav_container, new FirstFragment()); transaction.addToBackStack(null); transaction.commit(); } else if (rowID == -1) { Toast.makeText(getActivity(), "Invalid email", Toast.LENGTH_SHORT).show(); // print all users to the log List<User> users = userDAO.getAllUsers(); Log.d("UserDatabase", "All users:"); for (User user : users) { Log.d("UserDatabase", user.toString()); } } else { Toast.makeText(getActivity(), "Registration failed", Toast.LENGTH_SHORT).show(); } } }); Button buttonLogin_1 = view.findViewById(R.id.buttonLogin_1); buttonLogin_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.nav_container, new LoginFragment()); transaction.addToBackStack(null); transaction.commit(); } }); Button buttonExit = view.findViewById(R.id.buttonExit); buttonExit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getFragmentManager().popBackStack(); FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.nav_container, new FirstFragment()); transaction.addToBackStack(null); transaction.commit(); } }); return view; } @Override public void onDestroy() { super.onDestroy(); userDAO.close(); } } ```

question:что ты сделал

answer:Я добавил код для установки переменной `profile_num`, которая будет хранить id пользователя после успешного входа или регистрации. В классе `LoginFragment`, переменная устанавливается в `onClick` методе кнопки `buttonLogin`, после успешной проверки учетных данных. В классе `RegistrationFragment`, переменная устанавливается после успешной регистрации, также используя метод `getUserByEmail` класса `UserDAO`.

question:Cannot resolve method 'getUserByEmail' in 'UserDAO'

answer:Извините за это, я допустил ошибку. Для получения записи пользователя (User) из БД по электронной почте (email) в классе UserDAO нам нужно выполнить запрос к таблице пользователей, используя конструкцию `database.query`, как в методе `login`. Метод `getUserByEmail` должен выглядеть следующим образом: ``` public User getUserByEmail(String email) { Cursor cursor = database.query(UserDatabaseHelper.TABLE_USERS, new String[]{UserDatabaseHelper.COLUMN_ID, UserDatabaseHelper.COLUMN_NAME, UserDatabaseHelper.COLUMN_EMAIL, UserDatabaseHelper.COLUMN

question:能帮我写python的代码吗

answer:当然可以,请告诉我需要编写什么类型的代码。

Released under the Ad License.

has loaded