Я занимаюсь разработкой базового приложения для входа в Android, я просмотрел и прочитал множество учебных пособий на YouTube, и теперь я запутался в своем коде (поскольку я не профессионал).
Когда я набираю неправильный пароль, приложение будет отображать сообщение, как и ожидалось, но оно ничего не показывает, когда я набираю правильный пароль в соответствии с моей записью в базе данных. Я понятия не имею, как это исправить.
Я попытался заменить код "Намерение"... другим тост-сообщением, чтобы увидеть, выйдет ли что-нибудь, когда я введу правильный пароль, но ничего не отображается даже для тост-сообщения.
public void onResponse(String response) {
try {
JSONObject obj = new JSONObject(response);
if(!obj.getBoolean("error")){
SharedPrefManager.getInstance(getApplicationContext())
.userLogin(
obj.getString("username"),
obj.getString("email")
);
Intent intent = new Intent(getApplicationContext(), HomeActivity.class);
startActivity(intent);
}else{
Toast.makeText(
getApplicationContext(),
obj.getString("message"),
Toast.LENGTH_LONG
).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
Он должен запустить HomeActiviy, когда имя пользователя и пароль верны.
Проблема в вашем коде в getApplicationContext()
.
Попробуйте это решение
В методе этого залпового запроса добавьте параметр контекста
Context context
Начните деятельность, как это
Intent intent = new Intent(context, HomeActivity.class);
context.startActivity(intent);
Установите контекст как this
когда вы вызываете свою функцию залпа
Вам нужно позвонить в startActivity из основного потока, я считаю...
public void onResponse(String response) {
try {
JSONObject obj = new JSONObject(response);
if(!obj.getBoolean("error")){
SharedPrefManager.getInstance(getApplicationContext())
.userLogin(
obj.getString("username"),
obj.getString("email")
);
myActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
//Your code to run in GUI thread here
}//public void run() {
Intent intent = new Intent(getApplicationContext(),
HomeActivity.class);
startActivity(intent)
});
}else{
Toast.makeText(
getApplicationContext(),
obj.getString("message"),
Toast.LENGTH_LONG
).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
public void myRequest(Context context, String name, ......)
. Так что в своей деятельности вы вызываете эту функцию, например,myRequest(this, "xxxxx", ....)