2016-04-08 31 views
0

Belirli bir Göreli Düzen xml'yi programlı olarak eklemeye çalışıyorum. Bir ImageView, EditText ve bir TextView oluşur. Sorun, başka bir etkinlikten döndükten sonra bu "onActivityResult" yönteminde yapmaya çalışıyorum gibi görünüyor. Bunu başka bir yerde yaptığımda işe yarıyor ve yaratmak istediğim düzen düzgün bir şekilde ortaya çıkıyor (örneğin, "onCreate" ı ve bir düğmeye basmayı denedim), ancak "onActivityResult" öğesi çalışmıyorsa. Orada olmak için ona ihtiyacım var.Göreli Düzenleme programsal olarak gösterilmiyor

Baskılar her iki durumda da başarıyla verilir, hata veya kilitlenme yoktur, ancak düzen görünmeyebilir. Herhangi bir öneri takdir edilir.

<?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> 

bir buraya alakalı kod parçalarıdır:

Bu

Ben oluşturmak istiyorum xml dosyasıdır Bazı senaryolarda

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; 
     } 
    } 
+0

İlk bakışta, görünümünüzü yenilemek için eksiksiniz, cf. http://stackoverflow.com/questions/5991968/how-to-force-an-entire-layout-view-refresh – TAM

+0

Görünümün nereye gittiğini görmek için Hiyerarşi Görüntüleyiciyi deneyebilirsiniz: https://developer.android.com/ tools/help/hierarchy-viewer.html –

+0

'View damagePictureSet = layoutInflater.from (this) .inflat (R.layout.damage_picture_set, picturesCell, true);' yerine View damagePictureSet = layoutInflater.from (this) .inflate (R.layout.damage_picture_set, picturesCell, false); 'yardım? – jaibatrik

cevap

1

, onCreate yöntem onActivityResult sonra denilen alabilirsiniz yöntem. Bu durumda, setContentView yöntemi yeniden çağrılır ve ilk düzeni tekrar oluşturur. Bazı bayraklar ayarlamak veya Activity'dan bağımsız olarak verilerinizi güncellemek isteyebilirsiniz, böylece bayrak/veriye bağlı olarak View'u yeniden oluşturabilirsiniz.

+0

Bu, sorun oldu. Faaliyetlerden bağımsız olarak ilgili verileri yaptım, sonra işe yaradı. –