Android应用程序在启动时会显示一个白色的空白屏幕
我正在尝试实现一个简单的登录应用程序,其中用户详细信息(如用户名和密码)使用共享首选项硬编码到其中。 当我尝试启动应用程序时,它会显示一个空白的白色屏幕,并在我清除应用程序缓存时无限期地敬酒我的评论。 我该怎么修呢。 请帮帮我。!这是我的启动活动Android应用程序在启动时会显示一个白色的空白屏幕,android,sharedpreferences,Android,Sharedpreferences,我正在尝试实现一个简单的登录应用程序,其中用户详细信息(如用户名和密码)使用共享首选项硬编码到其中。 当我尝试启动应用程序时,它会显示一个空白的白色屏幕,并在我清除应用程序缓存时无限期地敬酒我的评论。 我该怎么修呢。 请帮帮我。!这是我的启动活动 public class MainActivity extends AppCompatActivity { BaseClass session; EditText userName; EditText passWord; Button logIn; @
public class MainActivity extends AppCompatActivity {
BaseClass session;
EditText userName;
EditText passWord;
Button logIn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
session = new BaseClass(getBaseContext());
// <---- run your one time code here
// BaseClass.getApp();
userName = (EditText) findViewById(R.id.etusername);
passWord = (EditText) findViewById(R.id.etpassword);
logIn = (Button) findViewById(R.id.btnlogin);
//toasting line
Toast.makeText(getBaseContext(),"User Login Status: "+session.isUserLoggedIn(),Toast.LENGTH_LONG).show();
session.checkLogin();
logIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String user = userName.getText().toString().trim();
String pass = passWord.getText().toString().trim();
String userVal = session.pref.getString(KEY_USERNAME, "username");
String passVal = session.pref.getString(KEY_PASSWORD, "password");
// userName.setText(userVal);
// passWord.setText(passVal);
Toast.makeText(getBaseContext(), "Editfield value:" + user, Toast.LENGTH_LONG).show();
Toast.makeText(getBaseContext(), "Actual username:" + userVal, Toast.LENGTH_LONG).show();
if (user.equals(userVal) && pass.equals(passVal)) {
session.createUserLoginSession(userVal,
passVal);
Intent intent = new Intent(MainActivity.this, QRScanning.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "Wrong Credentials", Toast.LENGTH_SHORT).show();
userName.setText("");
passWord.setText("");
}
}
});
}
}
}您将进入一个循环 当您从
MainActivity
中的onCreate
方法调用session.checkLogin()
时,由于用户未登录,您将再次启动MainActivity
,然后再次显示Toast,再次调用session.chechLogin()
,依此类推
您应该尝试修复代码流
希望这有帮助
更新
尝试以这种方式修复:
更改checkLogin
方法如下:
public boolean checkLogin() {
// Check login status
return(this.isUserLoggedIn());
}
然后,在main活动中执行以下操作:
public class MainActivity extends AppCompatActivity {
BaseClass session;
EditText userName;
EditText passWord;
Button logIn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
session = new BaseClass(getBaseContext());
if (session.checkLogin()) {
Intent intent = new Intent(MainActivity.this, QRScanning.class);
startActivity(intent);
finish();
}
setContentView(R.layout.activity_main);
// <---- run your one time code here
// BaseClass.getApp();
userName = (EditText) findViewById(R.id.etusername);
passWord = (EditText) findViewById(R.id.etpassword);
logIn = (Button) findViewById(R.id.btnlogin);
//toasting line
Toast.makeText(getBaseContext(),"User Login Status: "+session.isUserLoggedIn(),Toast.LENGTH_LONG).show();
logIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// YOUR CODE TO HANDLE LOGIN HERE
}
});
}
}
public类MainActivity扩展了AppCompatActivity{
基类会议;
编辑文本用户名;
编辑文本密码;
按钮登录;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
会话=新基类(getBaseContext());
if(session.checkLogin()){
意向意向=新意向(MainActivity.this,qrscan.class);
星触觉(意向);
完成();
}
setContentView(R.layout.activity_main);
//您将进入一个循环
当您从MainActivity
中的onCreate
方法调用session.checkLogin()
时,由于用户未登录,您将再次启动MainActivity
,然后再次显示Toast,再次调用session.chechLogin()
,依此类推
您应该尝试修复代码流
希望这有帮助
更新
尝试以这种方式修复:
更改checkLogin
方法如下:
public boolean checkLogin() {
// Check login status
return(this.isUserLoggedIn());
}
然后,在main活动中执行以下操作:
public class MainActivity extends AppCompatActivity {
BaseClass session;
EditText userName;
EditText passWord;
Button logIn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
session = new BaseClass(getBaseContext());
if (session.checkLogin()) {
Intent intent = new Intent(MainActivity.this, QRScanning.class);
startActivity(intent);
finish();
}
setContentView(R.layout.activity_main);
// <---- run your one time code here
// BaseClass.getApp();
userName = (EditText) findViewById(R.id.etusername);
passWord = (EditText) findViewById(R.id.etpassword);
logIn = (Button) findViewById(R.id.btnlogin);
//toasting line
Toast.makeText(getBaseContext(),"User Login Status: "+session.isUserLoggedIn(),Toast.LENGTH_LONG).show();
logIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// YOUR CODE TO HANDLE LOGIN HERE
}
});
}
}
public类MainActivity扩展了AppCompatActivity{
基类会议;
编辑文本用户名;
编辑文本密码;
按钮登录;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
会话=新基类(getBaseContext());
if(session.checkLogin()){
意向意向=新意向(MainActivity.this,qrscan.class);
星触觉(意向);
完成();
}
setContentView(R.layout.activity_main);
//你不应该手动创建应用程序实例,这是框架责任。我相信这是主要问题。你不应该手动创建应用程序实例,这是框架责任。我相信这是主要问题。我应该如何解决它?我是android的初学者,请帮助我!我会创建一个完成以下任务的LoginActivityng:检查用户是否已登录。如果是,则启动MainActivity和finish()LoginActivity。否则,向用户显示执行登录的布局(EditText或其他内容)。在这种情况下,必须将LoginActivity设置为AndroidManifest.xml中的启动程序活动为什么要使用finish()!我通常使用finish来阻止用户单击“上一步”按钮,并返回到登录活动(在本例中为MainActivity)即使他已经登录。请不要说这不起作用,而事实上它正在起作用。我应该如何修复它?我是android的初学者,请帮助我!我会创建一个LoginActivity,它执行以下操作:检查用户是否登录。如果是,则启动MainActivity并完成()LoginActivity。否则,向用户显示执行登录的布局(EditText或其他内容)。在这种情况下,必须将LoginActivity设置为AndroidManifest.xml中的启动程序活动。为什么要使用finish()!我通常使用finish来阻止用户单击后退按钮,然后返回登录活动(在本例中为MainActivity)即使他已经登录。请不要在实际工作时说这不工作。