簡體   English   中英

在Android中將值從另一個類返回給Activity

[英]Returning a value from another class to Activity in Android

您好,我一直在嘗試通過json將值從android表單傳遞到php頁面,並通過JSON獲取結果,我有一個示例並將其實現。 在該示例中,我將通過android表單輸入的用戶名和密碼通過頁面中的json通過php頁面傳遞到php頁面,它檢索從表單數據庫傳遞的詳細信息的作用並將結果傳遞給android類,並且我的功能將獲取的值設置為文本歸檔,結果顯示在特定的文本字段中。 現在我想要的是我想以字符串形式返回結果並在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()函數中歸檔的文本,我要做的是我希望將MainActivity中的值作為String返回,以做進一步的操作,而不是使用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); 
         }

您可以嘗試SharedPreferences,它易於使用且功能強大, 可以在這里找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM