2017-07-03 6 views
0

Ich habe eine Login-Aktivität erstellt, bietet es die Login-Schnittstelle der App.setContentView funktioniert nicht auf Android ohne statische Verweise auf Hauptaktivität

public class LoginActivity extends Activity { 

I erweitert die Aktivitätsklasse für sie, und dann die onCreate Methode wie folgt überschrieben:

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

     setContentView(R.layout.activity_login); 

     this.username = (TextView) findViewById(R.id.loginUsername); 
     this.password = (TextView) findViewById(R.id.passwordLogin); 

     this.username.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 

     ImageView banner = (ImageView) findViewById(R.id.imageView5); 
     banner.setImageResource(R.drawable.banner); 
    } 

Problem ist .. nichts zeigt auf dem Simulator auf.

Allerdings funktioniert dies völlig in Ordnung:

MainActivity.getInstance().setContentView(R.layout.activity_login); 

aber ist eine sehr Pad Praxis zu bedienen und häufige Abstürze verursachen. Was könnte falsch sein? Es werden keine Konsolenfehler angezeigt.

LoginActivity Klasse:

package flarehubpe.xflare.flarehub; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.text.InputType; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.os.Bundle; 

import flarehubpe.xflare.flarehub.utils.jsonData; 

import org.json.JSONException; 

public class LoginActivity extends Activity { 

    public TextView username; 
    public TextView password; 

    public boolean authenticated = false; 
    public ProfileActivity profileManager; 

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

     setContentView(R.layout.activity_login); 

     this.username = (TextView) findViewById(R.id.loginUsername); 
     this.password = (TextView) findViewById(R.id.passwordLogin); 

     this.username.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 

     ImageView banner = (ImageView) findViewById(R.id.imageView5); 
     banner.setImageResource(R.drawable.banner); 
    } 

    public void spawnToDevice(){ 
    } 

    public void login(){ 
     try { 
      jsonData data = RestAPI.getResponse("http://xxx/login.php?username=" + this.username.getText().toString() + "&password=" + this.password.getText().toString()); 
      if(data == null){ 
       sendAlert("Error", "Something went wrong... This is embarrassing. Please contact @ on twitter.","Ok"); 
       return; 
      } 
      if(!data.getString("error").contains("false")){ 
       sendAlert("Uh oh", data.getString("error"), "Ok"); 
       return; 
      } 
      sendAlert("Success!", "You are now logged in.", "Ok"); 
      createProfile(this.username.getText().toString(), this.password.getText().toString(), data.getInteger("coins"), data.getInteger("rankid"), data.getInteger("wins"), data.getInteger("kills"), data.getInteger("deaths")); 
      this.username.setText(""); 
      this.password.setText(""); 
      this.authenticated = true; 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    public void createProfile(String username, String password, Integer coins, Integer randid, Integer wins, Integer kills, Integer deaths){ 
     this.profileManager = new ProfileActivity(username, password, coins, randid, wins, kills, deaths); 
    } 

    public void sendAlert(String title, String content, String buttonText) { 
     AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
     alertDialog.setTitle(title); 
     alertDialog.setMessage(content); 
     alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, buttonText, 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.dismiss(); 
        } 
       }); 
     alertDialog.show(); 
    } 

    public void logout(){ 
     this.authenticated = false; 
     this.spawnToDevice(); 
    } 
} 
+0

„Problem ist .. nichts zeigt auf dem Simulator. " - Rufen Sie 'startActivity()' auf, um 'LoginActivity' anzuzeigen? "aber ist eine sehr Pad-Praxis zu verwenden und wird häufige Abstürze verursachen" - eine "statische" Verweis auf eine Aktivität ist eine schlechte Praxis. – CommonsWare

+1

Da 'MainActivity' funktioniert, sind Sie sicher, dass Sie sich in Ihrer' LoginActivity' befinden und nicht in der MainActivity? – tyczj

Antwort

0

Vielleicht verwenden Sie einen falschen Kontext für activity_login.xml

sollten Sie den Rahmen Ihrer Tätigkeit haben:

tools:context=".package_name.LoginActivity" 
Verwandte Themen