Java 将值从另一个类返回到Android中的活动

Java 将值从另一个类返回到Android中的活动,java,android,Java,Android,嗨,我一直在尝试通过json将值从android表单传递到php页面,并通过json获得结果。我有一个示例并实现了它。在该示例中,我通过页面中的json将android表单中输入的用户名和密码传递给php页面,它检索表单数据库中传递的详细信息的角色,并将结果传递给android类,我的函数将检索到的值设置为文本字段,结果显示在特定的文本字段中。现在,我希望以字符串形式返回结果,并在MainActivity中检索它。我正在粘贴下面的代码。请帮帮我 主课 public class MainActiv

嗨,我一直在尝试通过json将值从android表单传递到php页面,并通过json获得结果。我有一个示例并实现了它。在该示例中,我通过页面中的json将android表单中输入的用户名和密码传递给php页面,它检索表单数据库中传递的详细信息的角色,并将结果传递给android类,我的函数将检索到的值设置为文本字段,结果显示在特定的文本字段中。现在,我希望以字符串形式返回结果,并在MainActivity中检索它。我正在粘贴下面的代码。请帮帮我

主课

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);

   }
显著性

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);
   }
公共类重要性扩展了异步任务{
私人编辑文本角色域;
私人语境;
private int byGetOrPost=0;
私有静态输入流是;
//JSONObject jsonParser;
公共标志性(上下文、编辑文本角色字段、int标志){
this.context=上下文;
this.roleField=roleField;
this.is=null;
//this.jsonParser=new JSONObject();
}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
//TODO自动生成的方法存根
试一试{
字符串用户名=(字符串)arg0[0];
字符串密码=(字符串)arg0[1];
List params=new ArrayList();
添加(新的BasicNameValuePair(“名称”,用户名));
添加(新的BasicNameValuePair(“密码”,password));
/////////////////////////////////////////////////////////////////////////////
字符串链接=”http://Myapp.com/login.php";
//URL=新的URL(链接);
DefaultHttpClient httpClient=新的DefaultHttpClient();
String paramString=URLEncodedUtils.format(params,“utf-8”);
链接+=“?”+参数字符串;
HttpGet HttpGet=新的HttpGet(链接);
HttpResponse HttpResponse=httpClient.execute(httpGet);
HttpEntity HttpEntity=httpResponse.getEntity();
is=httpEntity.getContent();
StringBuilder sb=新的StringBuilder();;
/////////////////////////////////////////////////////////////////////////////
试一试{
BufferedReader reader=新的BufferedReader(新的InputStreamReader(
is,“iso-8859-1”),8);
字符串行=null;
而((line=reader.readLine())!=null){
sb.追加(第+行“\n”);
}
is.close();
字符串json=sb.toString();
}捕获(例外e){
Log.e(“缓冲区错误”,“错误转换结果”+e.toString());
}
使某人返回字符串();
}捕获(例外e){
返回新字符串(“异常:--”+e.getMessage());
}
}
受保护的void onPostExecute(字符串结果){
this.roleField.setText(结果);
}
}

在这里,检索结果并将其设置为SigninActivity类本身的
onPostExecute()
函数中的文本字段。我想做的是,我希望在MainActivity中以字符串形式返回值,以执行进一步的操作,而不是使用textView

这非常简单

使用此选项发送下一个活动

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); 
         }
用于在下一个活动中获取信息

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); 
         }

您可以尝试SharedReferences,它易于使用且功能强大

您可以使用接口作为对活动的回调。我不是在创建单独的活动,我现在正在创建一个java类,因为我提到了上述结果是在该类中获得的。如何将该结果返回到MainActivity。我在两个活动中尝试了这一点,它正在工作。有没有其他方法,这样我就可以更改几行代码,而不是更改整个代码。使用tushar narang的方法。但我个人认为我建议使用共享偏好,一开始看起来很复杂,但实际上很简单,不需要替换任何代码行,只需添加此方法存储在一个类中的共享首选项是否可以在另一个类中访问,如中所示如果我将首选项存储在SiginingActivity类中,我可以在MainActivity类中访问它吗?