2015-04-03 78 views
0

我正在学习如何构建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); 

    } 
} 
+0

贵SigninActivity从派生类是什么? (我假设没有活动?是AsyncTask还是类似的东西?) – yekretsaM 2015-04-03 19:27:32

+0

是的,是AsyncTask – 2015-04-03 19:28:37

+0

尝试将MainActivity的上下文保存在SigninActivity中的变量中并调用: context.setContentView(int)? – aProperFox 2015-04-03 19:29:49

回答

相关问题