我正在学习如何构建Android应用程序,并且正在构建登录应用程序。当用户登录时调用新布局
我创建了两个类:
MainActivity
usernameField = (EditText)findViewById(R.id.editText1);
passwordField = (EditText)findViewById(R.id.editText2);
public void loginGet(View view){
String username = usernameField.getText().toString();
String password = passwordField.getText().toString();
new SigninActivity(this,status,role,1).execute(username,password);
}
SigninActivity
@Override
protected void onPostExecute(String result){
if(result == ""){
this.statusField.setText("Wrong password.");
}else{
this.statusField.setText("Login Successful");
this.roleField.setText(result);
// I would like to change the Layout here
}
}
我怎样才能改变布局时,用户登录?
我试图把的setContentView,但我收到这样的警告:
方法的setContentView(INT)是未定义的类型 SigninActivity
谢谢你们。
更新:
SigninActivity
public class SigninActivity extends AsyncTask<String,Void,String>{
private TextView statusField,roleField;
private Context context;
private int byGetOrPost = 0;
//flag 0 means get and 1 means post.(By default it is get.)
public SigninActivity(Context context,TextView statusField,
TextView roleField,int flag) {
this.context = context;
this.statusField = statusField;
this.roleField = roleField;
}
protected void onPreExecute(){
}
@Override
protected String doInBackground(String... arg0) {
try{
String username = (String)arg0[0];
String password = (String)arg0[1];
String link = "http://10.0.2.2/example/teste.php?username="
+username+"&password="+password;
URL url = new URL(link);
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(link));
HttpResponse response = client.execute(request);
BufferedReader in = new BufferedReader
(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line="";
while ((line = in.readLine()) != null) {
sb.append(line);
break;
}
in.close();
return sb.toString();
}catch(Exception e){
return new String("Exception: " + e.getMessage());
}
}
@Override
protected void onPostExecute(String result){
if(result == ""){
this.statusField.setText("Wrong password.");
}else{
this.statusField.setText("Login Successful");
this.roleField.setText(result);
MainActivity.setAuth(context);
setContentView(R.layout.activity_main);
}
}
}
MainActivity
public class MainActivity extends Activity {
private EditText usernameField,passwordField;
private TextView status,role,method;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
usernameField = (EditText)findViewById(R.id.editText1);
passwordField = (EditText)findViewById(R.id.editText2);
status = (TextView)findViewById(R.id.textView6);
role = (TextView)findViewById(R.id.textView7);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void loginGet(View view){
String username = usernameField.getText().toString();
String password = passwordField.getText().toString();
new SigninActivity(this,status,role,0).execute(username,password);
}
}
贵SigninActivity从派生类是什么? (我假设没有活动?是AsyncTask还是类似的东西?) – yekretsaM 2015-04-03 19:27:32
是的,是AsyncTask – 2015-04-03 19:28:37
尝试将MainActivity的上下文保存在SigninActivity中的变量中并调用: context.setContentView(int)? – aProperFox 2015-04-03 19:29:49