[英]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.