将另一个类中的值返回到Android中的Activity

时间:2014-04-22 06:19:17

标签: java android

我一直试图通过json将值从android表单传递到php页面并通过JSON获得结果我有一个例子并实现了它。在那个例子中,我通过页面中的json将用户名和密码输入到android页面中的php页面,它检索通过表单数据库传递的详细信息的角色,并将结果传递给android类,我的函数将检索到的值设置为文本提交,结果显示在特定的文本字段中。现在想要我想要的是我想将结果作为String返回并在MainActivity中检索它。我正在粘贴下面的代码。请帮帮我。

MainActivity.class

public class MainActivity extends ActionBarActivity {

private EditText usernameField,passwordField,role;
   private TextView status,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);
      role = (EditText)findViewById(R.id.editText3);

}
public void login(View view){
      String username = usernameField.getText().toString();
      String password = passwordField.getText().toString();
      //method.setText("Get Method");
      new SigninActivity(this,role,0).execute(username,password);

   }

SigninActivity.class

public class SigninActivity extends AsyncTask<String,Void,String>{
private EditText  roleField;
   private Context context;
   private int byGetOrPost = 0; 
  private static InputStream is;
   //JSONObject jsonParser; 
   public SigninActivity(Context context,EditText roleField,int flag) {
              this.context = context;
              this.roleField = roleField;
              this.is=null;
             // this.jsonParser= new JSONObject();
           }
@Override
protected String doInBackground(String... arg0) {
    // TODO Auto-generated method stub
    try{
        String username = (String)arg0[0];
        String password = (String)arg0[1];
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("name", username));
        params.add(new BasicNameValuePair("password", password));
        /////////////////////////////////////////////////////////////////////////////
        String link = "http://Myapp.com/login.php";
        //URL url = new URL(link);
        DefaultHttpClient httpClient = new DefaultHttpClient();
        String paramString = URLEncodedUtils.format(params, "utf-8");
        link+= "?" + paramString;
        HttpGet httpGet = new HttpGet(link);

        HttpResponse httpResponse = httpClient.execute(httpGet);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();
        StringBuilder sb = new StringBuilder();;
        /////////////////////////////////////////////////////////////////////////////
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);

            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            String json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        return sb.toString();
  }catch(Exception e){
     return new String("Exception:-- " + e.getMessage());
  }

}
 protected void onPostExecute(String result){
      this.roleField.setText(result);
   }

}

这里检索结果并将其设置为SigninActivity类本身onPostExecute()函数中的文本,我想要做的是我希望将值作为String返回到MainActivity,以进行进一步的操作而不是使用一个textView

2 个答案:

答案 0 :(得分:0)

非常简单

使用此功能发送下一个活动

resp = new JSONObject(result);

                            JSONObject Login1Result = resp.getJSONObject("LoginResult");
                            String strMessage = Login1Result.getString("EmployeeID");

                        JSONObject status = Login1Result.getJSONObject("status");

                        if (status.getString("message").equalsIgnoreCase("OK"))
                        {


                           Intent i = new Intent(getApplicationContext(), next.class);
                           i.putExtra("new_variable_name",strMessage);
                           startActivity(i);  

将其纳入下一个活动

         {
             Bundle extras = getIntent().getExtras();
              String strEmployeeID="";
              if (extras != null)
              {

                  String value = extras.getString("new_variable_name");

                  strEmployeeID = value;
              }


             Intent i = new Intent(getApplicationContext(), nextTonext.class);
             i.putExtra("new_variable_name",strEmployeeID);
             startActivity(i); 
         }

答案 1 :(得分:0)

您可以尝试使用SharedPreferences,它易于使用且功能强大You can find it here