我已经创建了一个登录应用程序,它来自sql server的登录ID和密码 它适用于正确的登录ID,密码,并为空登录字段提供吐司
但是如果输入错误的字段。它没有显示出所需的吐司。也许我在错误的地方吃吐司。 我的代码是
public void onClick(View v) {
// TODO Auto-generated method stub
ResultSet rs=null;
String id=uid.getText().toString();
String upass=pass.getText().toString();
final String uid1=null;
final ProgressDialog pd=new ProgressDialog(MainActivity.this);
pd.setTitle("Processing");
pd.setMessage("Processing is going on..plz be patient...");
pd.show();
if(id.equals("")&&upass.equals("")){
Toast.makeText(getApplicationContext(), "empty id or password", Toast.LENGTH_SHORT).show();
}
new Thread(){
public void run(){
//defining task for progress dialog for busy.
try{
ResultSet rs=null;
String id=uid.getText().toString();
String upass=pass.getText().toString();
String uid1=null;
if(!id.isEmpty()&&!upass.isEmpty())
try{
initilize();
Statement statement=connect.createStatement();
rs=statement.executeQuery("LOGIN '"+id+"', '"+upass+"'");
List<String>data=new ArrayList<String>();
if(rs.next()){
uid1=rs.getString("PA_NAME");
pd.dismiss();
Intent i=new Intent(getApplicationContext(),SecondActivity.class);
i.putExtra("a", uid1);
startActivity(i);
}
}catch(Exception e){
e.printStackTrace();
}
else
Toast.makeText(MainActivity.this, "invalid id or password", Toast.LENGTH_LONG).show();pd.dismiss();
}catch(Exception e){
}
pd.dismiss();
}}.start();
如果有人建议我在哪个地方放置不正确的登录ID。在条件声明中。这很紧急。
答案 0 :(得分:1)
您只能在主线程上创建UI对象。这包括祝酒词。最简单的方法是使用Activity#runOnUiThread
来展示你的祝酒词。您还应该查看Handler
课程。
答案 1 :(得分:0)
new Thread() {
public void run() {
activity.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "invalid id or password", Toast.LENGTH_LONG).show();
}
});
}
}.start();
final Handler mHandler = new Handler();
final Runnable mUpdateResults = new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "invalid id or password", Toast.LENGTH_LONG).show();
}
new Thread() {
public void run() {
mHandler.post(mUpdateResults);
}
}.start();
答案 2 :(得分:0)
你应该总是在UIthread中显示吐司。修改代码如下所示:
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "invalid id or password", Toast.LENGTH_LONG).show();
pd.dismiss();
}
});
答案 3 :(得分:0)
尝试这样做:
MainActivity.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MainActivity, "Toast on the main Activity", Toast.LENGTH_SHORT).show();
}
});
答案 4 :(得分:0)
最好的方法是在主活动(UI线程)中编写处理程序。在处理程序中显示吐司。从线程发布消息到该处理程序。