public class AnnotationDialogFragment extends DialogFragment {
public String name;
public String snippet;
Context context;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
int index = snippet.indexOf(":");
final String id = snippet.substring(0, index);
snippet = snippet.substring(index + 1);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(name);
builder.setMessage(snippet);
builder.setPositiveButton(R.string.detail, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, int which) {
AsyncDetail asyncDetail = new AsyncDetail(new AsyncTaskCallback() {
@Override
public void postExecute(String result) {
getActivity(); //この時点では既にActivityとFragmentは破棄されている getActivity() = null
Intent intent = new Intent(context, DetailActivity.class);
intent.setClassName("パッケージ名", "パッケージ名.DetailActivity");
intent.putExtra("result", result);
startActivity(intent);
}
});
asyncDetail.execute("URL", id);
}
});
builder.setNegativeButton(R.string.close, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
return builder.create();
}
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
context = activity;
}
}
public class AsyncDetail extends AsyncTask<String, Integer, String> {
public AsyncTaskCallback callback = null;
public AsyncDetail(AsyncTaskCallback _callback) {
this.callback = _callback;
}
private HttpClient hClient = new DefaultHttpClient();
// バックグラウンドで処理
@Override
protected String doInBackground(String... params) {
String uri = params[0];
int id = Integer.parseInt( params[1] );
return PostLocations(uri, id);
}
// バックグラウンド処理が終了した後にメインスレッドに渡す処理
protected void onPostExecute(String result) {
super.onPostExecute(result);
this.callback.postExecute(result);
}
// 位置情報(JSON)をダウンロード
private String PostLocations(String uri, int id) {
Log.d("PostLocations", "uri=" + uri);
try {
HttpPost post = new HttpPost(uri);
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", id);
StringEntity se = new StringEntity(jsonObject.toString(), "UTF-8");
post.setHeader("Accept", "application/json");
post.setHeader("Content-Type", "application/json");
post.setEntity(se);
HttpResponse resp = hClient.execute(post);
if (resp.getStatusLine().getStatusCode() < 400) {
Log.v("start","json post success");
String str = EntityUtils.toString(resp.getEntity(), HTTP.UTF_8);
return str;
}
} catch (Exception e) {
Log.d("PostLocations","error");
e.printStackTrace();
}
return null;
}
}
--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
...