2014-02-10 2 views
0

두 조각 사이를 통과하는 데이터에 문제가 있습니다. 한 활동에 두 개의 단편이 있습니다. Fragment1에서 나는 내가 이미지 뷰, 텍스트 뷰와 체크 박스리스트 뷰를 채우기 내 ListViewAdapter의 레이아웃조각에서 단편으로 데이터를 전달하십시오.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/relativeLayout1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="10dp" > 

<ImageView 
    android:id="@+id/imageView01" 
    android:layout_width="100dip" 
    android:layout_height="100dip" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:scaleType="fitXY" 
    android:src="@drawable/icon" /> 

<CheckBox 
    android:id="@+id/checkBox1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/titleView1" 
    android:layout_alignTop="@+id/imageView01" 
    android:text="add to favorites" /> 

<TextView 
    android:id="@+id/titleView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/checkBox1" 
    android:layout_toRightOf="@+id/imageView01" 
    android:text="text" 
    android:textColor="#FF2F22" 
    android:textSize="16sp" 
    android:textStyle="bold" /> 

</RelativeLayout> 

활동 코드

public class MainActivity extends FragmentActivity { 
private PagerAdapter mPagerAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.viewpager_layout); 
    initialisePaging();  
} 

private void initialisePaging() {  
    List<Fragment> fragments = new Vector<Fragment>(); 
    fragments.add(Fragment.instantiate(this, Fragment1.class.getName())); 
    fragments.add(Fragment.instantiate(this, Fragment2.class.getName()));  
    mPagerAdapter = new PagerAdapter(this.getSupportFragmentManager(), fragments); 
    ViewPager pager = (ViewPager) findViewById(R.id.viewpager); 
    pager.setAdapter(mPagerAdapter); 
} 
} 

fragment1 코드

public class Fragment1 extends Fragment { 
private ListView listViewImages; 
private EditText txtSearchText; 
private ListViewImageAdapter adapter; 
private ArrayList<Object> listImages; 
private Fragment activity; 
String strSearch = null;  

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = (LinearLayout) inflater.inflate(R.layout.fragment1_layout, container, false); 
    activity = this; 
    listViewImages = (ListView) view.findViewById(R.id.lviewImages); 
    ... 
    return view; 
} 

와 목록보기가 있습니다. 체크 박스 나는 (내가 확인란을 선택하면 데이터가 Fragment2에 전달해야)는 OnClickListener를 설정하려는

CheckBox call = (CheckBox) vi.findViewById(R.id.checkBox1);   
    call.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
     // HERE DATA MUST BE PASSED TO Fragment2 
     RelativeLayout rl = (RelativeLayout) v.getParent(); 
    TextView txtViewTitle = (TextView) rl.findViewById(R.id.titleView1); 
    String text = txtViewTitle.getText().toString();      
    Log.i("!!!", "Click on CheckBox"+text); 
} 
    }); 

겠어요 - 내 질문에 어떻게 다른 단편에 데이터를 전달할 수 있습니다, 내가 ListBox (ListView 항목이 아닌 !!!)를 누르면? 나는 ListFragment가 없다. ListView를 가진 간단한 조각이다. ListView의 각 항목은 ImageView, CheckBox, TextBox를 포함한다. 감사합니다. .

+0

중복 가능성 [조각 사이의 값을 전달하는 방법 (http://stackoverflow.com/questions/16036572/how -to-passed-values-fragments 사이) – midhunhk

+0

MainActivity 넘기 –

+0

@zond 작은 예제를 썼습니다. –

답변

2

필자와 IDE를 가지고 있지 않지만, MainActivity를 통해 다른 단편으로 데이터를 전달하는 원칙을 보여주기위한 간단한 예를 만들었습니다.

MainActivity

class MainActivity{ 
    //Globalize your Fragments 
    Fragment1 mFrag1; 
    Fragment2 mFrag2; 
    //Init those two Fragments and add them to your layout; 

    public void sendDataToFrag1(String data){ 
     mFrag1.setData(data); 
    } 


    public void sendDataToFrag2(String data){ 
     mFrag2.setData(data); 
    } 
} 

Frag1 또는 Frag2

class Fragment1{ 
//.... oncreate and so on 

    //perhaps on Buttonclick 
    new OnClickListeneter{ 
     @Override 
     onClick(View v){ 
      passData("The Button was clicked"); 
     } 
    } 

    //here comes the value from the other fragment 
    public void setData(String data){ 
     myTextView.setText(data); 
    } 

    //Here you send some data over MainActivity to the other Fragment 
    private void passData(String data){ 
     ((MainActivity)getActitivity()).sendDataToFrag2(data) 
    } 

} 
관련 문제