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();
}
}
„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
Da 'MainActivity' funktioniert, sind Sie sicher, dass Sie sich in Ihrer' LoginActivity' befinden und nicht in der MainActivity? – tyczj