Пожалуйста, кто-то поможет мне в этом, У меня есть php
скрипт, который возвращает Json
ответ как «успех», если условие выполнено. Я поставил заявление журнала, и я получаю ответ как «успех», но когда я помещаю reesponse в , если оператор не распознает его. плюс, если я получаю ответ «Успех», я хочу изменить цвет кнопки с красного на зеленый в , если оператор, который дает мне ошибку, и мое приложение падает. , так что моя проблема заключается в следующем:Получение ответа JSON от сервера
- Я получаю ответ «успех», но как включить его в утверждение if? потому что он непосредственно выполняет инструкцию else.
- Оператор смены кнопки приводит к сбою моего приложения, если я поставлю оператор смены кнопки в другой части для тестирования.
Вот мой код
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Session class instance
session = new SessionManager(getApplicationContext());
Toast.makeText(getApplicationContext(), "User Login Status: " + session.isLoggedIn(), Toast.LENGTH_LONG).show();
/**
* Call this function whenever you want to check user login
* This will redirect user to LoginActivity is he is not
* logged in
* */
session.checkLogin();
setContentView(R.layout.movie_detail);
bt=(Button)findViewById(R.id.buttonchange);
titlee=(TextView)findViewById(R.id.mtitle);
date=(TextView)findViewById(R.id.mdate);
like=(TextView)findViewById(R.id.mlikes);
video=(TextView)findViewById(R.id.mvideo);
idd=(TextView)findViewById(R.id.mid);
image=(ImageView)findViewById(R.id.imageView);
UniqueId=(TextView)findViewById(R.id.unique_id);
ts=(TextSwitcher)findViewById(R.id.tsLikesCounter);
Intent i=getIntent();
//image.setImageResource(i.getStringExtra("THUMB"));
titlee.setText(i.getStringExtra("TITLE"));
like.setText("Likes = "+i.getStringExtra("LIKES"));
date.setText("Date = " + i.getStringExtra("DATE"));
video.setText("Video = " + i.getStringExtra("VIDEO"));
idd.setText(i.getStringExtra("IDD"));
UniqueId.setText(i.getStringExtra("UNIQUEID"));
String id = idd.getText().toString();
String unique = UniqueId.getText().toString();
// private void insertToDatabase(String id,String unique){
class SendPostReqAsyncTaskk extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
String paramUsername = params[0];
String paramAddress = params[1];
String id = idd.getText().toString();
String unique = UniqueId.getText().toString();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("id", id));
nameValuePairs.add(new BasicNameValuePair("unique", unique));
// getting JSON Object
// Note that create product url accepts POST method
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("MY_URL");
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httpPost);
String json = EntityUtils.toString(response.getEntity());
if(json=="success"){
Log.d("IN IF::", json);
bt.setBackgroundResource(R.drawable.green1);
}
else {
Log.d("IN ELSE:::", json);
}
// writing response to log
Log.d("Http Response:::", json);
// Toast.makeText(getBaseContext(), response.toString(), Toast.LENGTH_SHORT).show();
HttpEntity entity = response.getEntity();
//JSONObject myObject = new JSONObject(TAG_SUCCESS);
// int success =response.getInt(TAG_SUCCESS);
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
return "success";
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
}
SendPostReqAsyncTaskk check = new SendPostReqAsyncTaskk();
check.execute(id, unique);
}
здесь ошибка в заявлении изменения кнопки
10-20 10: 34: 56,597 2433-2452 /? D/IN ELSE :::: "success"
10-20 10: 34: 56.787 2433-2452 /? W/dalvikvm: threadid = 14: выход с отключенным исключением (группа = 0x400207d8)
10-20 10: 34: 56,797 2433-2452 /? E/AndroidRuntime: FATAL EXCEPTION: AsyncTask # 1 java.lang.RuntimeException: Произошла ошибка во время выполнения doInBackground() на android.os.AsyncTask $ 3.done (AsyncTask.java:200) на java.util.concurrent. FutureTask $ Sync.innerSetException (FutureTask.java:273) at java.util.concurrent.FutureTask.setException (FutureTask.java:124) at java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:307) на java.util.concurrent.FutureTask.run (FutureTask.java:137) на java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1068) на java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:561) at java.lang.Thread.run (Thread.java:1096) Вызвано: android.view.ViewRoot $ CalledFromWrongThreadException: только исходный поток, создавший иерархию представлений, может коснуться его представлений. на android.view.ViewRoot.checkThread (ViewRoot.java:2812) в android.view.ViewRoot.invalidateChild (ViewRoot.java:607) в android.view.ViewRoot.invalidateChildInParent (ViewRoot.java:633) на android.view.ViewGroup.invalidateChild (ViewGroup.java:2505) на android.view.View.invalidate (View.java:5139) на android.view.View.setBackgroundDrawable (View.java:7486) на android. view.View.setBackgroundResource (View.java:7395) в com.sne.movielist.MovieDetailActivity $ 1SendPostReqAsyncTaskk.doInBackground (MovieDetailActivity.java:145) в com.sne.movielist.MovieDetailActivity $ 1SendPostReqAsyncTaskk.doInBackground (MovieDetailActivity.java: 114) на android.os.Asyn cTask $ 2.call (AsyncTask.java:185) at java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:305) at java.util.concurrent.FutureTask.run (FutureTask.java:137) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1068) по адресу java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java: 561) at java.lang.Thread.run (Thread.java:1096)
10-20 10: 34: 56.797 175-175 /? W/ActivityManager: принудительная финишная деятельность com.sne.movielist/.MovieDetailActivity
10-20 10: 34: 56.887 175-192 /? I/ActivityManager: обеспечитьBootCompleted(): enableScreenfalse
10-20 10: 34: 56,897 2433-2433 /? I/ActivityThread: queueIdle
10-20 10: 34: 56.897 2433-2433 /? В/ActivityThread: Отчетность простоя из ActivityRecord {4a4c4b50 [email protected] {com.sne.movielist/com.sne.movielist.MainActivity}} закончил = ложная
записи, как это 'json.equals («success») ' –
Пожалуйста, напишите свой ответ json – KishuDroid
. Мой ответ - это только одно поле« успех ». – Shelby