我一直试图通过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
答案 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