プログラムで特定の相対レイアウトxmlを追加しようとしています。 ImageView、EditText、およびTextViewで構成されています。問題は、別のアクティビティから返された後にその "onActivityResult"メソッドで処理しようとしているようです。私は別の場所でそれを行うと、作成したいレイアウトが正しく表示されます(たとえば、 "onCreate"とボタンの押下で正常に試しました)が、 "onActivityResult"の内部がうまくいかない場合などです。私はそこにいることが必要です。プログラムで追加された相対レイアウトが表示されません
どちらの場合でも印刷が正常に出力されますが、エラーやクラッシュはありませんが、レイアウトは表示されません。どんな提案も感謝しています。
これは私が作成したいXMLファイルです:コードの関連部分です
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="260dip">
<ImageView
android:id="@+id/damagePicture"
android:layout_width="match_parent"
android:layout_height="210dip"
android:scaleType="centerCrop"
android:layout_marginTop="10dip"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:src="@drawable/nocar"/>
<EditText
android:id="@+id/orderTextfield"
android:layout_height="40dip"
android:layout_width="match_parent"
android:gravity="left|center"
android:layout_marginLeft="10dip"
android:layout_marginRight="45dip"
android:hint="Enter damage description"
android:textSize="14sp"
android:layout_alignParentLeft="true"
android:textColor="@color/black"
android:textColorHint="@color/gray_vin_search_text"
android:background="@null"
android:singleLine="true"
android:editable="true"
android:layout_below="@+id/damagePicture"/>
<TextView
android:id="@+id/removePicture"
android:layout_width="40dip"
android:layout_height="40dip"
android:text="@string/discardPicture"
android:gravity="center|center"
android:textColor="@color/black"
android:textSize="24sp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:clickable="true"
android:onClick="removePicture"/>
<View
android:id="@+id/bottomLine"
android:layout_width="match_parent"
android:layout_height="1dip"
android:layout_alignParentBottom="true"
android:background="@color/gray_for_line"></View>
</RelativeLayout>
アンここではいくつかのシナリオで
public void addResultingDamagePicture(String pathToFile) {
System.out.println("ADD RESULTING DAMAGE PICTURE");
LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(this.LAYOUT_INFLATER_SERVICE);
View damagePictureSet = layoutInflater.from(this).inflate(R.layout.damage_picture_set, picturesCell, false);
((TextView) damagePictureSet.findViewById(R.id.removePicture)).setTypeface(fontAwesome);
TextView remove = (TextView)damagePictureSet.findViewById(R.id.removePicture);
remove.setTypeface(fontAwesome);
File imgFile = new File(pathToFile);
if(imgFile.exists()) {
System.out.println("ADD RESULTING DAMAGE PICTURE - FILE OK");
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inSampleSize = 4;
final Bitmap thebmp = BitmapFactory.decodeFile(imgFile.getAbsolutePath(), opt);
((ImageView) damagePictureSet.findViewById(R.id.damagePicture)).setImageBitmap(thebmp);
picturesCell.addView(damagePictureSet);
} else {
System.out.println("ADD RESULTING DAMAGE PICTURE - NO FILE EXISTS!!!");
}
return;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SHOOT_DAMAGE_PICTURE && resultCode == RESULT_OK) {
final String encodedPicture = data.getStringExtra("PATH_TO_PICTURE");
System.out.println("PICTURE RESULT = " + encodedPicture);
addResultingDamagePicture(encodedPicture);
} else {
System.out.println("ON ACTIVITY RESULT = NOT OK");
return;
}
}
一見すると、あなたの視界をリフレッシュするために欠落しています。 http://stackoverflow.com/questions/5991968/how-to-force-an-entire-layout-view-refresh – TAM
階層ビューアを使用して、ビューの移動先を確認することができます。https://developer.android.com/ツールバー/ help/hierarchy-viewer.html –
Viewの代わりに 'damagePictureSet = layoutInflater.from(this).inflate(R.layout.damage_picture_set、picturesCell、true);を表示します。 (R.layout.damage_picture_set、picturesCell、false); '助け? – jaibatrik