2016-04-09 15 views
-1

Android'de nasıl program yapacağımı öğreniyorum ve parçalarımı değiştirme konusunda bazı sorunlar yaşıyorum. Burada bulduğum neredeyse tüm çözümleri denedim ama çalışmıyorlar.Parçaların dinamik olarak değiştirilmesi - java.lang.IllegalArgumentException: Kimlik numarası bulunamadı

fragment_result.xml

<?xml version="1.0" encoding="utf-8"?> 

    <FrameLayout 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" tools:context="com.example.ic.projeto_final.ResultFragment"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/resultView"> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight=".90" 
       android:gravity="center" 
       android:orientation="horizontal" > 

       <Button 
        android:layout_width="0dp" 
        android:layout_weight=".10" 
        android:layout_height="wrap_content" 
        android:text="setaesq - pegar cod ascii" 
        android:id="@+id/btnPrevious" 
       /> 

       <LinearLayout 
        android:layout_width="0dp" 
        android:layout_weight=".80" 
        android:layout_height="match_parent" 
        android:orientation="vertical"> 

        <TextView 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="15dp" 
         android:textAlignment="center" 
         android:textSize="25dp" 
         android:id="@+id/fileName" > 
        </TextView> 

        <TextView 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="15dp" 
         android:textAlignment="center" 
         android:textSize="25dp" 
         android:id="@+id/fileDistance" > 
        </TextView> 

        <ImageView 
         android:layout_marginTop="15dp" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:id="@+id/fileImage" 
        /> 

      </LinearLayout> 

      <Button 
       android:layout_width="0dp" 
       android:layout_weight="0.1" 
       android:layout_height="wrap_content" 
       android:text="seta dir pegar cod ascii" 
       android:id="@+id/btnNext" 
       /> 

     </LinearLayout> 

     <Button 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Fazer nova consulta" 
      android:layout_gravity="center_horizontal" 
      android:layout_alignParentBottom="true" 
      android:id="@+id/btnNovaConsulta"/> 
    </LinearLayout> 

</FrameLayout> 

Ve ilgili sınıf: Burada

benim ben ekranda göstermeye çalışıyorum düzenidir

ResultFragment.java

public class ResultFragment extends Fragment { 

public ResultFragment() { 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_result, container, false);  

    TextView fileName = (TextView) rootView.findViewById(R.id.fileName); 
    TextView fileDistance = (TextView) rootView.findViewById(R.id.fileDistance); 

    ImageView imageName = (ImageView) rootView.findViewById(R.id.fileImage); 

    Button btnPrevious = (Button) rootView.findViewById(R.id.btnPrevious); 
    Button btnNext = (Button) rootView.findViewById(R.id.btnNext); 

    return rootView; 
} 
.210

}

Ve bu Görüntülenen fragman değiştirmeye çalışırsa benim MainActivity içinde parçasıdır:

MainActivityFragment.java

btnConsulta.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 


     /* Others pieces of code that not affect this part */ 

       ResultFragment result = new ResultFragment(); 
       FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); 
       transaction.replace(R.id.resultView, result); 
       transaction.addToBackStack(null); 
       transaction.commit(); 
      } 
     } 

Halen benim LogCat gösterilen hatadır:

java.lang.IllegalArgumentException: No view found for id 0x7f0a000f (com.example.ic.projeto_final:id/resultView) for fragment ResultFragment{143a9831 #0 id=0x7f0a000f} 
     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:886) 
     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
     at android.app.BackStackRecord.run(BackStackRecord.java:834) 
     at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1452) 
     at android.app.FragmentManagerImpl$1.run(FragmentManager.java:447) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5257) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

Ayrıca getChildFragm yerine getFragmentManager() yöntemini kullanmayı denedim entManager(), kimliği fragment_result.xml dosyasındaki FrameLayout ile ilişkilendirir, ancak aynı zamanda çalışmaz. Sorunu çözmek için göstermek gerektiğini eksik bir şey varsa

, sadece beni böyle yaptı ana faaliyet xml dosyasında

+0

'resultView gibi görünüyor 'senin parçanın içinde, * değil * senin faaliyetin. –

+0

Bunu işaretledikten sonra bunun nasıl ele alınacağını anlamaya başladım, teşekkürler. Bazı testler yapıyorum ve neredeyse çalışıyor. Şimdiki problemim, eski xml'nin hala arka planda görünmesi. – Alexandre

cevap

0

bildirmek bu:

< FrameLayout 
android:id = "@+id/resultView" 
android:layout_width = "wrap_content" 
android_layout_hight = "match_parent" 
/> 
+0

Fikrinizi şimdi denedim, ancak sorun hala devam ediyor – Alexandre

+0

Sonuç sayfanızın türü nedir? FrameLayout nedir? sonucunu yarattın mı? Ana faaliyetinizin xml'sinde oluşturulmalıdır. Kodumu güncelledim –

+0

Ana etkinliğin xml dışındaydı. David'in yorumunu okudum ve bunu anlamaya başladım. Seninle aynı şeyi yaptım ve neredeyse işe yaradı, ama eski xml hala arka planda görülebilir. – Alexandre

İlgili konular