0

Я пытаюсь сделать приложение для Android для банка крови в android, используя Firebase. На моей домашней странице отображается список доннеров с городом и контакт №. но проблема заключается в том, когда пользователь входит в систему, а затем возвращается на домашнюю страницу, где он/она может видеть список участников, которые приложение останавливает.Как контролировать активность в Android, когда его ловят и выходят из системы?

Для лучшего понимания я даю здесь весь свой код класса. Может ли кто-нибудь помочь мне в этом процессе? Заранее спасибо.

package alik.com.pmscs; 

import android.content.Intent; 
import android.content.SharedPreferences; 
import android.graphics.Color; 
import android.graphics.drawable.ColorDrawable; 
import android.os.Bundle; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.firebase.client.Firebase; 
import com.firebase.ui.database.FirebaseListAdapter; 
import com.google.android.gms.auth.api.signin.GoogleSignInOptions; 
import com.google.firebase.auth.FirebaseAuth; 
import com.google.firebase.auth.FirebaseUser; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 

import java.util.ArrayList; 

import alik.com.loader.Information; 

public class HomePage extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 

Intent intent; 
FirebaseAuth auth; 
FirebaseAuth.AuthStateListener authStateListener; 
ListView listView; 
ArrayList <Information> informations; 
Firebase firebase; 
ImageView call; 
//FirebaseUser user; 
FirebaseAuth.AuthStateListener listener; 
GoogleSignInOptions signInOptions; 

DatabaseReference reference; 
NavigationView navigationView; 
com.firebase.ui.database.FirebaseListAdapter <Information> adapter; 

SharedPreferences sharedPreferences; 
SharedPreferences.Editor editor; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home_page); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    auth=FirebaseAuth.getInstance(); 
    listener=new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(FirebaseAuth firebaseAuth) { 
      FirebaseUser user=auth.getCurrentUser(); 
      if(user==null){ 
       Menu menu=navigationView.getMenu(); 
       menu.findItem(R.id.nav_signoutfrom).setVisible(false); 
       menu.findItem(R.id.nav_profileon).setVisible(false); 
       menu.findItem(R.id.nav_adddonnor).setVisible(false); 
      } 

     } 
    }; 


    listView=(ListView)findViewById(R.id.listView); 

    FirebaseDatabase.getInstance().setPersistenceEnabled(true); 

    final FirebaseDatabase database=FirebaseDatabase.getInstance(); 
    reference=database.getReference(); 
    reference.keepSynced(true); 
    adapter=new FirebaseListAdapter<Information>(
      this, 
      Information.class, 
      R.layout.donorlist, 
      reference 
    ) { 
     @Override 
     protected void populateView(View v, Information model, int position) { 

      ((TextView)v.findViewById(R.id.donnor_blood)).setText(model.getBloodgroup()); 
      ((TextView)v.findViewById(R.id.donor_name)).setText(model.getName()); 
      ((TextView)v.findViewById(R.id.donor_contact)).setText(model.getContact()); 
      ((TextView)v.findViewById(R.id.donor_city)).setText(model.getCity()+", "+model.getCountry()); 

     } 
    }; 
    listView.setAdapter(adapter); 




    ColorDrawable colorDrawable=new ColorDrawable(Color.parseColor("#bc212b")); 
    getSupportActionBar().setBackgroundDrawable(colorDrawable); 



    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 
} 

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 
     super.onBackPressed(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.home_page, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

//@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

    if (id == R.id.nav_reg) { 
     // Handle the camera action 
     intent=new Intent(getApplicationContext(),RegisterAccount.class); 
     startActivity(intent); 
     //finish(); 

    } else if (id == R.id.nav_login) { 
     intent=new Intent(getApplicationContext(),Login.class); 
     startActivity(intent); 
     //finish(); 

    } 
    else if (id == R.id.nav_profileon) { 

     if(listener!=null){ 

      Toast.makeText(getApplicationContext(),"This Feature is Comming Soon!!", Toast.LENGTH_LONG).show(); 


     } 
     else { 
      Toast.makeText(getApplicationContext(),"Please Login First", Toast.LENGTH_LONG).show(); 

     } 
    } 
    else if(id==R.id.nav_adddonnor){ 
     if(listener!=null){ 
      startActivity(new Intent(getApplicationContext(),DonnarRegistration.class)); 
      //finish(); 
     } 
     else{ 
      Toast.makeText(getApplicationContext(),"Please Login First", Toast.LENGTH_LONG).show(); 

     } 

    } 
    else if (id == R.id.nav_signoutfrom) { 

     if(listener!=null){ 
      FirebaseAuth.getInstance().signOut(); 
      Toast.makeText(getApplicationContext(), "Sign Out Successfully", Toast.LENGTH_LONG).show(); 


     } 
     else{ 
      Toast.makeText(getApplicationContext(),"Please Login First", Toast.LENGTH_LONG).show(); 
     } 


    } 


    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    if(listener!=null){ 
     auth.removeAuthStateListener(listener); 
    } 
} 

@Override 
protected void onStart() { 
    super.onStart(); 
    auth.addAuthStateListener(listener); 
} 

@Override 
protected void onPostResume() { 
    super.onPostResume(); 

} 
} 

Мой код Войти Класс здесь

package alik.com.pmscs; 

import android.content.Intent; 
import android.graphics.Color; 
import android.graphics.drawable.ColorDrawable; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.text.TextUtils; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ProgressBar; 
import android.widget.Toast; 
import com.google.android.gms.tasks.OnCompleteListener; 
import com.google.android.gms.tasks.Task; 
import com.google.firebase.auth.AuthResult; 
import com.google.firebase.auth.FirebaseAuth; 
public class Login extends AppCompatActivity { 

private EditText inputEmail, inputPassword; 
private FirebaseAuth auth; 
private ProgressBar progressBar; 
private Button btnSignup, btnLogin; 


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

    ColorDrawable colorDrawable=new ColorDrawable(Color.parseColor("#bc212b")); 
    getSupportActionBar().setBackgroundDrawable(colorDrawable); 
    getSupportActionBar().setTitle("Sign Up"); 

    auth = FirebaseAuth.getInstance(); 

    inputEmail = (EditText) findViewById(R.id.email); 
    inputPassword = (EditText) findViewById(R.id.password); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar); 
    btnSignup = (Button) findViewById(R.id.btn_signup); 
    btnLogin = (Button) findViewById(R.id.btn_login); 


    auth=FirebaseAuth.getInstance(); 

    btnSignup.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent=new Intent(getApplicationContext(), RegisterAccount.class); 
      startActivity(intent); 
      finish(); 

     } 
    }); 
    btnLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String email = inputEmail.getText().toString(); 
      final String password = inputPassword.getText().toString(); 

      if (TextUtils.isEmpty(email)) { 
       Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show(); 
       return; 
      } 

      if (TextUtils.isEmpty(password)) { 
       Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show(); 
       return; 
      } 
      progressBar.setVisibility(View.VISIBLE); 
      auth.signInWithEmailAndPassword(email, password).addOnCompleteListener(Login.this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(Task<AuthResult> task) { 
        progressBar.setVisibility(View.GONE); 
        if (!task.isSuccessful()) { 
         // there was an error 
         Toast.makeText(getApplicationContext(),"There is an error",Toast.LENGTH_LONG).show(); 
         if (password.length() < 6) { 
          inputPassword.setError(getString(R.string.minimum_password)); 
         } else { 
          Toast.makeText(Login.this, getString(R.string.auth_failed), Toast.LENGTH_LONG).show(); 
         } 
        } else { 
         Intent intent = new Intent(Login.this, HomePage.class); 
         startActivity(intent); 
         finish(); 
        } 

       } 
      }); 
     } 
    }); 
} 


} 

Так что проблема, когда я вошел в то пытается вернуться в свою главную деятельность оно было остановлено. Поэтому мне нужна помощь экспертов для ее решения. Будет приятно, если вы поможете мне в этой задаче.

Мой Gradle файл:

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.4.0' 
compile 'com.android.support:design:23.4.0' 
compile 'com.firebase:firebase-client-android:2.4.0' 
compile 'com.google.firebase:firebase-auth:10.0.1' 
compile 'com.google.firebase:firebase-core:10.0.1' 
compile 'com.google.firebase:firebase-database:10.0.1' 
compile 'com.google.firebase:firebase-storage:10.0.1' 

compile 'com.firebaseui:firebase-ui-database:0.4.0' 

} 
apply plugin: 'com.google.gms.google-services' 
+0

пожалуйста, напишите StackTrace – nullvoid

ответ

0

Вы пытались изменить Войти деятельность следующим образом? Здесь я проверяю, был ли пользователь уже зарегистрирован в активности входа, и если это я называю активностью HomePage.

public class Login extends AppCompatActivity { 

private EditText inputEmail, inputPassword; 
private FirebaseAuth auth; 
private ProgressBar progressBar; 
private Button btnSignup, btnLogin; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    auth = FirebaseAuth.getInstance(); 

    if (auth.getCurrentUser() != null) { 

     Intent intent = new Intent(Login.this, HomePage.class); 
     startActivity(intent); 
     finish(); 
    } 

    setContentView(R.layout.activity_login); 

    ColorDrawable colorDrawable=new ColorDrawable(Color.parseColor("#bc212b")); 
    getSupportActionBar().setBackgroundDrawable(colorDrawable); 
    getSupportActionBar().setTitle("Sign Up"); 

    inputEmail = (EditText) findViewById(R.id.email); 
    inputPassword = (EditText) findViewById(R.id.password); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar); 
    btnSignup = (Button) findViewById(R.id.btn_signup); 
    btnLogin = (Button) findViewById(R.id.btn_login); 

    btnSignup.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent=new Intent(getApplicationContext(), RegisterAccount.class); 
      startActivity(intent); 
      finish(); 

     } 
    }); 
    btnLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String email = inputEmail.getText().toString(); 
      final String password = inputPassword.getText().toString(); 

      if (TextUtils.isEmpty(email)) { 
       Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show(); 
       return; 
      } 

      if (TextUtils.isEmpty(password)) { 
       Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show(); 
       return; 
      } 
      progressBar.setVisibility(View.VISIBLE); 
      auth.signInWithEmailAndPassword(email, password).addOnCompleteListener(Login.this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(Task<AuthResult> task) { 
        progressBar.setVisibility(View.GONE); 
        if (!task.isSuccessful()) { 
         // there was an error 
         Toast.makeText(getApplicationContext(),"There is an error",Toast.LENGTH_LONG).show(); 
         if (password.length() < 6) { 
          inputPassword.setError(getString(R.string.minimum_password)); 
         } else { 
          Toast.makeText(Login.this, getString(R.string.auth_failed), Toast.LENGTH_LONG).show(); 
         } 
        } else { 
         Intent intent = new Intent(Login.this, HomePage.class); 
         startActivity(intent); 
         finish(); 
        } 

       } 
      }); 
     } 
    }); 
} 

Надеется, что это может соответствовать вашим требованиям

+0

Нет, это все еще не работает, как я expected.after войти в его еще забоях :( – Alik

+0

Можете ли вы опубликовать журнал ошибок? –

 Смежные вопросы

  • Нет связанных вопросов^_^