textViewのテキストをウェブサイトのタイトルに合わせて変更します。バックグラウンドスレッドからtextViewプロパティを変更する方法
このため、https://www.google.comに接続し、そのHTMLソースコードを取得しています。それからタイトルタグを取り出します。 (JSoupを使用して)
問題は、今私はどのようにtextViewを変更するか分からないということです。ネットワーキングはバックグラウンドスレッドで起こっているため、アクセスできません。どこでどのようにすればいいですか?
また、Log.wのおかげで正常に接続されていることがわかりました。
は、ここで私が持っているものです。
MainActivity
public class MainActivity extends AppCompatActivity {
Button btnConnect;
final String URL = "https://www.google.com";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnConnect = (Button) findViewById(R.id.btnConnect);
btnConnect.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// launch networking task
new EstablishConnectionTask().execute(URL);
}
});
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.awakened.tirafesi.awakenedprototype.MainActivity">
<Button
android:text="Establish Connection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:id="@+id/btnConnect" />
<TextView
android:text="Placeholder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="87dp"
android:id="@+id/txtTitle" />
</RelativeLayout>
EstablishConnectionTask
public class EstablishConnectionTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String title;
try {
Document doc = Jsoup.connect(urls[0]).get();
title = doc.title();
} catch (IOException e) {
e.printStackTrace();
title = "NO";
}
return title;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.w("Title", s);
}
}
リスナーを作成して** EstablishConnectionTask **に送信し、次にonPostExecuteでインターフェイスメソッドを呼び出します。 MainActivityでは最初にそのリスナーを実装し、オーバーライドメソッドでtextViewのタイトルを設定できます。 – eminuluyol
何が@eminuluyolによると、この質問は、コード例を示します:http://stackoverflow.com/questions/9447646/how-do-i-send-data-back-from-onpostexecute-in-an-asynctask – RScottCarson
私はそれを得る...どのようにMainActivityのインターフェイスメソッドのオーバーライドは、onPostExecuteのインターフェイス上の呼び出しに影響を与えますか?あなたはそれのコードを追加してもよろしいですか? – Tirafesi