Я создал приложение, в котором пользователь регистрируется со своими учетными данными, а также загружает изображение профиля. При входе в систему пользователь вводит свое имя пользователя, пароль и имя изображения, которое он загрузил. До сих пор пользователь успешно регистрируется с его учетными данными вместе со своим профилем pic. Я сохранил учетные данные пользователя в MySql, пока изображение пользователя хранится в папке на том же сервере. Теперь, когда я пытаюсь войти в систему, он дает мне NullPointerException
, и мое приложение падает. Я не знаю, почему это происходит, я проверил свой код, я не нашел ошибки. Я загружаю его здесь. Пожалуйста, предоставьте мне ответ. Спасибо.DownloadImage при входе в систему
Login.java
public void onClick(View view) {
switch (view.getId()) {
case R.id.bLogin:
String username = etUsername.getText().toString();
String password = etPassword.getText().toString();
String name1=etimagen.getText().toString();
User user = new User(username, password,name1);
DownloadImage di=new DownloadImage(etimagen.getText().toString());
di.execute();
authenticate(user);
break;
case R.id.tvRegisterLink:
Intent registerIntent = new Intent(Login.this, Register.class);
startActivity(registerIntent);
break;
}
}
private void authenticate(User user) {
ServerRequests serverRequest = new ServerRequests(this);
serverRequest.fetchUserDataAsyncTask(user, new GetUserCallback() {
@Override
public void done(User returnedUser) {
if (returnedUser == null) {
showErrorMessage();
} else {
logUserIn(returnedUser);
}
}
});
}
private void showErrorMessage() {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(Login.this);
dialogBuilder.setMessage("Incorrect user details");
dialogBuilder.setPositiveButton("Ok", null);
dialogBuilder.show();
}
private void logUserIn(User returnedUser) {
userLocalStore.storeUserData(returnedUser);
userLocalStore.setUserLoggedIn(true);
startActivity(new Intent(this, MainActivity.class));
}
public class DownloadImage extends AsyncTask<Void, Void, Bitmap>
{
String name1;
public DownloadImage(String name1)
{
this.name1=name1;
}
@Override
protected Bitmap doInBackground(Void... arg0) {
String url=SERVER_ADDRESS + "pictures1/" + name1 + ".JPG";
try
{
URLConnection connection=new URL(url).openConnection();
connection.setConnectTimeout(1000*30);
connection.setReadTimeout(1000*30);
return BitmapFactory.decodeStream((InputStream) connection.getContent(),null,null);
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
@Override
public void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
if(bitmap!=null)
{
MainActivity main=new MainActivity();
main.bitmap=bitmap;
main.image();
}
}
}
MainActivity.java
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.bLogout:
userLocalStore.clearUserData();
userLocalStore.setUserLoggedIn(false);
Intent loginIntent = new Intent(this, Login.class);
startActivity(loginIntent);
break;
}
}
@Override
protected void onStart() {
super.onStart();
if (authenticate() == true) {
displayUserDetails();
}
}
private boolean authenticate() {
if (userLocalStore.getLoggedInUser() == null) {
Intent intent = new Intent(this, Login.class);
startActivity(intent);
return false;
}
return true;
}
private void displayUserDetails() {
User user = userLocalStore.getLoggedInUser();
etUsername.setText(user.username);
etName.setText(user.name);
etAge.setText(user.age + "");
}
public Bitmap image() {
image2.setImageBitmap(bitmap);
return bitmap;
}
}
Error Log
09-05 15:39:34.179: E/AndroidRuntime(4236): FATAL EXCEPTION: main
09-05 15:39:34.179: E/AndroidRuntime(4236): Process: com.example.loginregister, PID: 4236
09-05 15:39:34.179: E/AndroidRuntime(4236): java.lang.NullPointerException
09-05 15:39:34.179: E/AndroidRuntime(4236): at com.example.loginregister.MainActivity.image(MainActivity.java:86)
09-05 15:39:34.179: E/AndroidRuntime(4236): at com.example.loginregister.Login$DownloadImage.onPostExecute(Login.java:132)
09-05 15:39:34.179: E/AndroidRuntime(4236): at com.example.loginregister.Login$DownloadImage.onPostExecute(Login.java:1)
09-05 15:39:34.179: E/AndroidRuntime(4236): at android.os.AsyncTask.finish(AsyncTask.java:632)
09-05 15:39:34.179: E/AndroidRuntime(4236): at android.os.AsyncTask.access$600(AsyncTask.java:177)
09-05 15:39:34.179: E/AndroidRuntime(4236): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
@rj ив путы .. вы можете посмотреть –
ошибки находится на линии в MainActivity нет 86, но вы не поставили весь код MainActivity, его трудно понять –
Я положил основную часть –