次のような Android xml レイアウト ファイルがあります。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#184A64">
<ImageView
android:id="@+id/logoTop"
android:layout_width="fill_parent"
android:layout_height="42dip"
android:layout_alignParentTop="true"
android:layout_gravity="center"
android:background="#F1CF2F"
android:contentDescription="@string/descLogoTop"
android:padding="4dip"
android:src="@drawable/logoTop" />
<ImageView
android:id="@+id/logoBot"
android:layout_width="fill_parent"
android:layout_height="42dip"
android:layout_alignParentBottom="true"
android:layout_gravity="center"
android:background="#F1CF2F"
android:contentDescription="@string/descLogoBot"
android:padding="4dip"
android:src="@drawable/logoBot" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/logoTop"
android:orientation="vertical"
android:padding="6dip" >
<TextView
android:id="@+id/data"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:text="date"
android:textColor="#FFFFFF"
android:textSize="12sp"
android:textStyle="normal" />
<ImageView
android:id="@+id/icon"
android:layout_width="103dip"
android:layout_height="62dip"
android:layout_marginBottom="6dip"
android:layout_marginRight="6dip"
android:contentDescription="@string/descLogo"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/toptext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="title"
android:textColor="#F1CF2F"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/bottomtext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="false"
android:text="text"
android:textColor="#FFFFFF"
android:textSize="12sp" />
</LinearLayout>
</RelativeLayout>
画面の上下に 2 つの ImageView があり、中央に LinearLayout がある単純なレイアウトです。私が欲しいのは、Bundle からいくつかのデータを取得し、それを LinearLayout に書き込むことです。このために、次の Java コードがあります。
public class NewsD extends Activity {
private ProgressDialog m_ProgressDialog = null;
private Runnable viewNews;
private Bundle bundle;
private News m_news = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_activity);
bundle = this.getIntent().getExtras();
m_ProgressDialog = ProgressDialog.show(NewsD.this,
this.getString(R.string.wait), this.getString(R.string.receiving, true));
runOnUiThread(new Runnable(){
@Override
public void run() {
getNews();
}
});
}
public void getNews() {
m_news = new News();
m_news.setNewsTitle(bundle.getString("title"));
m_news.setNewsText(bundle.getString("text"));
m_news.setNewsDate(bundle.getString("data"));
m_news.setNewsPhoto(bundle.getString("photo"));
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = vi.inflate(R.layout.activity_news_activity, null);
try{
ImageView iv = (ImageView) v.findViewById(R.id.icon);
TextView tt = (TextView) v.findViewById(R.id.toptext);
TextView bt = (TextView) v.findViewById(R.id.bottomtext);
if (iv != null) {
try{
Bitmap bmp = Utils.getBitmapFromURL("http://www.myserver.com/IMG/" + m_news.getNewsPhoto());
if (bmp == null){
Log.i("PHOTO ERROR", "http://www.myserver.com/IMG/" + m_news.getNewsPhoto());
}
iv.setImageBitmap(bmp);
} catch (Exception e){
Log.e("IMAGE ERROR", e.getMessage() + " - " + e.getStackTrace());
}
}
if (tt != null) {
tt.setText(m_news.getNewsTitle());
}
if(bt != null){
bt.setText(m_news.getNewsText());
}
TextView dt = (TextView) v.findViewById(R.id.data);
Date nd = new Date(Long.parseLong(m_news.getNewsDate())*1000);
Calendar cal = Calendar.getInstance();
cal.setTime(nd);
dt.setText(cal.get(Calendar.DAY_OF_MONTH) + "/" + cal.get(Calendar.MONTH) + "/" + cal.get(Calendar.YEAR));
} catch (Exception e){
Log.e("ERROR", e.getMessage());
}
m_ProgressDialog.dismiss();
}
}
問題は、3 つの TextView と ImageView が、xml で指定されたデフォルトのテキスト/画像を表示することです。確認しました
ImageView iv = (ImageView) v.findViewById(R.id.icon);
TextView tt = (TextView) v.findViewById(R.id.toptext);
TextView bt = (TextView) v.findViewById(R.id.bottomtext);
ステートメントと正常に動作するようです。null ではありません。また、バンドルからのデータは問題ありません。これについて 1 時間ほど調査し、コードを変更して runOnUiThread() ステートメントを追加し、getNews() 関数が UI スレッドで実行されるようにしました。しかし、何も機能しません。誰でも私を助けてもらえますか?
前もって感謝します。