여기에이 코드가 있습니다. 아주 잘 작동합니다.JSON 값을리스트 뷰를 사용하지 않고 텍스트 뷰로 출력합니다.
내가는 텍스트 뷰에 JSON의 결과를 표시하려고하지만, 매번 난, 응용 프로그램 충돌을 그렇게하고 난 그것에 대해 많이 검색
솔루션의 대부분의 ListView에 값을 사용하는 방법에 대한 것입니다하지만 난 단지 필요 그 하나 개의 결과와는
public class ProfileActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_profile_activity);
// we will using AsyncTask during parsing
new AsyncTaskParseJson().execute();
}
// you can make this class as another java file so it will be separated from your main activity.
public class AsyncTaskParseJson extends AsyncTask<String, String, String> {
final String TAG = "AsyncTaskParseJson.java";
// set your json string url here
String yourJsonStringUrl = "http://example.com";
// contacts JSONArray
JSONArray dataJsonArr = null;
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(String... arg0) {
try {
// instantiate our json parser
JSONParser jParser = new JSONParser();
// get json string from url
JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl);
// get the array of users
dataJsonArr = json.getJSONArray("Users");
// loop through all users
for (int i = 0; i < dataJsonArr.length(); i++) {
JSONObject c = dataJsonArr.getJSONObject(i);
String username = c.getString("UserName");
// show the values in our logcat
Log.e(TAG, "Username: " + username);
TextView lblName = (TextView) findViewById(R.id.name);
lblName.setText(username);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String strFromDoInBg) {}
}
}
JSON이 값 무슨 메신저 JSON에서 검색입니다
{ "Users": [ { "fullName ":"", "UserName ":"admin", "UserRegistered ":"2014-09-07 15:42:39", "EmailAddress ":"[email protected]", "ProfilePicture ":"http://static.adzerk.net/Advertisers/8f5b41b43c804b25b9bed0806b82ac69.gif", "Facebook ":"http://facebook.com", "Twitter ":"http://twitter.com", "LinkedIn ":"http://plus.google.com", "GooglePlus ":"http://linkedin.com", "ProfileHeader ":"User Extra Field", "TotalPosts ":"10" } ] }
로그 캣 오류
09-08 17:19:56.426: E/AsyncTaskParseJson.java(6729): Username: admin // This to validate the getting value is correct
09-08 17:19:56.430: W/dalvikvm(6729): threadid=12: thread exiting with uncaught exception (group=0xa624a288)
09-08 17:19:56.430: E/AndroidRuntime(6729): FATAL EXCEPTION: AsyncTask #1
09-08 17:19:56.430: E/AndroidRuntime(6729): java.lang.RuntimeException: An error occured while executing doInBackground()
09-08 17:19:56.430: E/AndroidRuntime(6729): at android.os.AsyncTask$3.done(AsyncTask.java:299)
09-08 17:19:56.430: E/AndroidRuntime(6729): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
09-08 17:19:56.430: E/AndroidRuntime(6729): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
09-08 17:19:56.430: E/AndroidRuntime(6729): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
09-08 17:19:56.430: E/AndroidRuntime(6729): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
09-08 17:19:56.430: E/AndroidRuntime(6729): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
09-08 17:19:56.430: E/AndroidRuntime(6729): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
09-08 17:19:56.430: E/AndroidRuntime(6729): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
09-08 17:19:56.430: E/AndroidRuntime(6729): at java.lang.Thread.run(Thread.java:856)
09-08 17:19:56.430: E/AndroidRuntime(6729): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
09-08 17:19:56.430: E/AndroidRuntime(6729): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4607)
09-08 17:19:56.430: E/AndroidRuntime(6729): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:867)
09-08 17:19:56.430: E/AndroidRuntime(6729): at android.view.ViewGroup.invalidateChild(ViewGroup.java:4066)
09-08 17:19:56.430: E/AndroidRuntime(6729): at android.view.View.invalidate(View.java:10250)
09-08 17:19:56.430: E/AndroidRuntime(6729): at android.view.View.invalidate(View.java:10205)
09-08 17:19:56.430: E/AndroidRuntime(6729): at android.widget.TextView.checkForRelayout(TextView.java:6296)
09-08 17:19:56.430: E/AndroidRuntime(6729): at android.widget.TextView.setText(TextView.java:3547)
09-08 17:19:56.430: E/AndroidRuntime(6729): at android.widget.TextView.setText(TextView.java:3405)
09-08 17:19:56.430: E/AndroidRuntime(6729): at android.widget.TextView.setText(TextView.java:3380)
09-08 17:19:56.430: E/AndroidRuntime(6729): at com.twaa9l.photosee.ProfileActivity$AsyncTaskParseJson.doInBackground(ProfileActivity.java:67)
09-08 17:19:56.430: E/AndroidRuntime(6729): at com.twaa9l.photosee.ProfileActivity$AsyncTaskParseJson.doInBackground(ProfileActivity.java:1)
09-08 17:19:56.430: E/AndroidRuntime(6729): at android.os.AsyncTask$2.call(AsyncTask.java:287)
09-08 17:19:56.430: E/AndroidRuntime(6729): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
09-08 17:19:56.430: E/AndroidRuntime(6729): ... 5 more
wheres the textView? 'onPostExecute'에서'strFromDoInBg' 매개 변수를 사용한다고 가정하면'doInBackground'가'null'을 반환하기 때문에 항상'null'을 반환합니다. – Spurdow
@Spurdow 레이아웃 파일에, 나는 많은 솔루션을 시도하고 나를 위해 작동하지 않았다 그래서 만약 누군가가 그것을 해결하는 방법을 알고 코드를 게시 할 수 있습니다. –
충돌에 대한 기록을 제공해 주시겠습니까? – grattmandu03