안녕하세요^^ mysql에서 데이터(url)를 받아와서 버튼 온클릭 메서드에 url을 넣어서 클릭시 그 페이지가 뜨도록 하는 코드르 짜고 있습니다. 데이터를 받아와서 텍스트에 넣는것 까지는 되는데 온클릭메서드를 대체 어떻게 넣어야 될지 모르겠습니다.
public class MainActivity extends AppCompatActivity {
// 데이터를 받아올 PHP 주소
String urlz = "http://제 내부 아이피/getdata.php";
// 데이터를 보기위한 TextView
TextView tv;
Button btn;
// PHP를 읽어올때 사용할 변수
public GettingPHP gPHP;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gPHP = new GettingPHP();
tv = (TextView) findViewById(R.id.textView);
btn = (Button) findViewById(R.id.button);
gPHP.execute(urlz);
}
class GettingPHP extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
StringBuilder jsonHtml = new StringBuilder();
try {
URL phpUrl = new URL(params[0]);
HttpURLConnection conn = (HttpURLConnection) phpUrl.openConnection();
if (conn != null) {
conn.setConnectTimeout(10000);
conn.setUseCaches(false);
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
while (true) {
String line = br.readLine();
if (line == null)
break;
jsonHtml.append(line + "\n");
}
br.close();
}
conn.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
return jsonHtml.toString();
}
protected void onPostExecute(String str) {
try {
// PHP에서 받아온 JSON 데이터를 JSON오브젝트로 변환
JSONObject jObject = new JSONObject(str);
// results라는 key는 JSON배열로 되어있다.
JSONArray results = jObject.getJSONArray("result");
String zz = "";
for (int i = 0; i < results.length(); ++i) {
JSONObject temp = results.getJSONObject(i);
zz += temp.get("url");
}
tv.setText(zz);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
public void gourl(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("url"));
startActivity(intent);
finish();
}
}
1. 이래저래 시도해보니까 위에 url엔 제가 원하는 값 (디비에서 받아온거)이 들었는데 밑에 url은 그냥 텅빈 문자그대로의 url 이란것 까진 알겠습니다. 이게 AsyncTask 코드를 벗어나서 그런것 맞나요?
2. 코드 안에 넣을려고 해도 자꾸 에러(빨간줄) 뜨면서 안되던데 어떤방식으로 해결해야 하나요??
고수님들 도와주세요..