0

hier ist mein Code:Wie bekomme ich den Anwendungskontext von non activity und finish() ;?

dies der HomeActivity.java ist:

public class HomeActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     session = new SessionManagement(getApplicationContext()); 
     session.checkLogin(); 

Dies ist SessionManagement.java:

public class SessionManagement { 
    SharedPreferences pref; 

    // Editor for Shared preferences 
    SharedPreferences.Editor editor; 

    // Context 
    Context _context; 

    public void checkLogin(){ 
     // Check login status 
     if(!this.isLoggedIn()){ 

      // user is not logged in redirect him to Login Activity 
      Intent i = new Intent(_context, LoginActivity.class); 
      // Closing all the Activities 
      i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

      // Add new Flag to start new Activity 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

      // Staring Login Activity 
      _context.startActivity(i); 
     } 

    } 
} 

Ich versuche zu nennen "Finish();" drinnen: public void checkLogin() {if (! this.isLoggedIn()) { also kann ich schließen/finish(); die HomeActivity.java-Klasse.

Wie kann ich das tun?

+4

würde ich empfehlen, es auf diese Weise nicht zu tun. Übergeben Sie stattdessen einen "boolean" in "checkLogin()" und verschieben Sie dann den gesamten startActivity-Code in die Aktivitätsklasse selbst. – DeeV

Antwort

1

Ihre Klasse erstellen, wie die Anwendung erstreckt, in meinem Fall, meine Klasse ist:

package zillion; 

import android.app.Application; 
import android.content.Context; 

/** 
* Created by SCM on 2017-02-17. 
*/ 

public class Zillion extends Application { 

    private static Context mContext; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mContext = getApplicationContext(); 
    } 

    public static Context getContext() { 
     return mContext; 
    } 
} 

Im Modul, das diese benutzerdefinierte Klasse enthält, gehen Sie auf die manifiest und definiert den Namen der Anwendung als:

<application 
     android:name=".Zillion" 
</application> 

Dann von Ihrer anderen Klasse, rufen sie den App Kontext:

Zillion.getContext()