2013-11-24 31 views
11

Yapmaya çalıştığım bir projem var. Küçük bir sorunla karşılaştım ve bunun nasıl geçeceğinden emin değilim. Aşağıda uygulamanın bugüne kadar bir görüntüsü.Onclick sırasında parçalar arasında nasıl geçiş yapılır?

Bunu yapmak istediğim, kullanıcının liste öğelerinden birini tıklatmasıdır, "Merhaba! Fragment2" yazan bölüm, uygulamada bildirdiğim yeni bir xml olarak değişir.

AndroidListFragmentActivity: Ben ATO listitem tıklayın, o zaman sağ tarafta parçası gibi bir şey olarak değişmelidir İşte

enter image description here

şimdiye kadar benim kodu "Merhaba O ATO Parçası var"

package com.exercise.AndroidListFragment; 

import android.app.Activity; 
import android.os.Bundle; 

public class AndroidListFragmentActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

Fragment2:

package com.exercise.AndroidListFragment; 

import android.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class Fragment2 extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     return inflater.inflate(R.layout.fragment2, container, false); 
    } 

} 

MyListFragment1:

package com.exercise.AndroidListFragment; 

import android.app.ListFragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 

public class MyListFragment1 extends ListFragment { 

    String[] options ={ 
      "ATO", 
      "BETA", 
      "DELT", 
      "PHI DELT", 
      "SAE", 
      "SIG NU", 
      "FIJI", 
      "SIG CHI", 
      "PHI PSI" 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ListAdapter myListAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, options); 
     setListAdapter(myListAdapter); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.listfragment1, container, false); 
    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 
     Toast.makeText(getActivity(), getListView().getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show(); 
    } 
} 

Fragment2.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/fragment2text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Hello! It's Fragment2" /> 
</LinearLayout> 

listfragment1.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingLeft="8dp" 
     android:paddingRight="8dp"> 

    <ListView android:id="@id/android:list" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_weight="1" 
       android:drawSelectorOnTop="false"/> 

    <TextView android:id="@id/android:empty" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:text="No data"/> 
</LinearLayout> 

main.xml

kodunuzu almak için asgari düzeltme emin ne
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" > 

    <fragment 
     android:name="com.exercise.AndroidListFragment.MyListFragment1" 
     android:id="@+id/fragment1" 
     android:layout_weight="1" 
     android:layout_width="0px" 
     android:layout_height="match_parent" /> 
    <fragment 
     android:name="com.exercise.AndroidListFragment.Fragment2" 
     android:id="@+id/fragment2" 
     android:layout_weight="2" 
     android:layout_width="0px" 
     android:layout_height="match_parent" /> 

</LinearLayout> 

cevap

13

Değil çalışıyor, ama var Parçalar arasında geçiş yapmak için Navigation Drawer'u kullanarak nasıl baktınız? Bana öyle görünüyor ki resmi belgelerdeki örnek, tam olarak elde etmek istediğiniz şeyi eşleştiriyor.

bir anahtar (yerine XML gibi <fragment> kullanmanın) Görüntülenen fragman için konteyner çeşit sahip olmaktır. Örneğin:

<FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

Sonra parçaları anahtarlama şöyle bir şey:

Fragment fragment = new Fragment2(); 
// Insert the fragment by replacing any existing fragment 
FragmentManager fragmentManager = getFragmentManager(); 
fragmentManager.beginTransaction() 
       .replace(R.id.content_frame, fragment) 
       .commit(); 

fazla okuma: Add a Fragment to an Activity at Runtime Android geliştirici dokümanlarında.

+0

bana @Jonik yardımcı olabilir http://stackoverflow.com/questions/23356848/transaction-between-fragment-and-activity? – Noufal

İlgili konular