2014-01-07 5 views
1

안녕에 전송 데이터가 나는 안드로이드 프로그래밍에 새로운 오전 때 클릭 된 여러 버튼을 추적하는 방법 나는이 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="match_parent" > 

<Button 
    android:id="@+id/sisButton" 
    android:layout_width="wrap_content" 
    android:layout_height="35dp" 
    android:layout_alignParentTop="true" 
    android:layout_alignRight="@+id/smallButton" 
    android:layout_alignParentLeft="true" 
    android:layout_marginLeft="16dp" 
    android:layout_marginTop="18dp" 
    android:text="@string/sis" /> 

<Button 
    android:id="@+id/soeButton" 
    android:layout_width="wrap_content" 
    android:layout_height="35dp" 
    android:layout_alignBaseline="@+id/sisButton" 
    android:layout_centerHorizontal="true" 
    android:text="@string/soe" /> 
<Button 
    android:id="@+id/solButton" 
    android:layout_width="wrap_content" 
    android:layout_height="35dp" 
    android:layout_alignBaseline="@+id/sisButton" 
    android:layout_alignParentRight="true" 
    android:text="@string/sol" /> 

<Button 
    android:id="@+id/sobButton" 
    android:layout_width="wrap_content" 
    android:layout_height="35dp" 
    android:layout_alignLeft="@+id/textViewNumLockersAvailable" 
    android:layout_below="@+id/sisButton" 
    android:layout_marginTop="18dp" 
    android:layout_alignParentLeft="true" 
    android:layout_marginLeft="16dp" 
    android:text="@string/sob" /> 

<Button 
    android:id="@+id/allSchoolsButton" 
    android:layout_width="wrap_content" 
    android:layout_height="35dp" 
    android:layout_marginLeft="150dp" 
    android:layout_toRightOf="@+id/sobButton" 
    android:layout_alignBaseline="@+id/sobButton" 
    android:text="@string/all" /> 

<Button 
    android:id="@+id/smallButton" 
    android:layout_width="wrap_content" 
    android:layout_height="35dp" 
    android:layout_below="@+id/sobButton" 
    android:layout_marginTop="28dp" 

    android:text="@string/small" /> 



<Button 

     android:text="@string/large" /> 

<Button 

     android:text="@string/all" /> 

    <Button 

    android:text="@string/lv1" /> 

<Button 

    android:text="@string/lv2" /> 

<Button 

     android:text="@string/lv3" /> 

<Button 

    android:text="@string/all" /> 

    <Button 

    android:text="@string/ViewNumLockersAvailable" /> 

<Button 

     android:text="@string/search" /> 
<Button 

    android:text="@string/logout" /> 



    </RelativeLayout> 

질문이 어떻게 내가 다른 조각에 데이터를 전송할 때

이 도와주세요, 클릭했다 버튼의 추적 할

답변

1

방법 나는 또 다른 단편 알 수있는 바와 같이

로 데이터를 전송할 때 내가 클릭했다 버튼의 추적 할, 당신은 간 조각 데이터 전송을 찾고 있습니다. 그런 다음

public interface InterFragmentDataTransferer { 
    public void btnListener(String dataStr1, String dataStr2); 
    // You may define here as many other methods as you need. 
} 

부모 활동에서이 인터페이스를 구현, 원하는 행동 &을 함께하는 방법 (들)을 오버라이드 (override) : 부모 활동이 인터페이스를 통해이 전송 (또는 원하는 다른 동작을) 처리하자

public class MyFragment extends Fragment implements OnClickListener { 

    private InterFragmentDataTransferer mFragDataTransferer; 

    public static Fragment newInstance() { 
     return new MyFragment(); 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     mFragDataTransferer = (InterFragmentDataTransferer) activity; 
    } 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
      Log.d(TAG, "inside OncreateView()"); 
      ViewGroup rv = (ViewGroup) inflater.inflate(
           R.layout.your_layout, container, false); 

      (rv.findViewById(R.id.sisButton)) 
          .setOnClickListener(this); 
      (rv.findViewById(R.id.soeButton)) 
          .setOnClickListener(this); 
      (rv.findViewById(R.id.solButton)) 
          .setOnClickListener(this); 
      (rv.findViewById(R.id.sobButton)) 
          .setOnClickListener(this); 
      (rv.findViewById(R.id.allSchoolsButton)) 
          .setOnClickListener(this); 
      (rv.findViewById(R.id.smallButton)) 
          .setOnClickListener(this); 

      // TODO write your other code 
    } 


    @Override 
    public void onClick(View v) { 

      switch (v.getId()) { 
      case R.id.sisButton: 
       // TODO write button click-action here 
       mFragDataTransferer.btnListener(dataStr1, dataStr2); 
       break; 
      case R.id.soeButton: 
       // TODO write button click-action here 
       mFragDataTransferer.btnListener(dataStr1, dataStr2); 
       break; 
      case R.id.solButton: 
       // TODO write button click-action here 
       mFragDataTransferer.btnListener(dataStr1, dataStr2); 
       break; 
      case R.id.sobButton: 
       // TODO write button click-action here 
       mFragDataTransferer.btnListener(dataStr1, dataStr2); 
       break; 
      case R.id.allSchoolsButton: 
       // TODO write button click-action here 
       mFragDataTransferer.btnListener(dataStr1, dataStr2); 
       break; 
      case R.id.smallButton: 
       // TODO write button click-action here 
       mFragDataTransferer.btnListener(dataStr1, dataStr2); 
       break; 
      default: 
       break; 
      } 
    } 
} 
: 당신은 데이터를 전달하는 데 사용할 수있는 조각의 onAttach 방법, 내부 호출자 조각 내부의 인터페이스 인스턴스를 얻을 것이다, 마지막으로

public MyFragmentHolderActivity extends Activity implements InterFragmentDataTransferer { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.your_parent_activity_layout); 
     // Do other instantiation jobs; 
     // . 
     // . 
     mFragment = MyFragment.newInstance(); 

    } 

    public void btnListener(String dataStr1, String dataStr2) { 
     // You've the desired data here :D ... so do whatever you'd like. 
    } 
} 

: 마지막으로 당신의 조각을 인스턴스화 0

추가 팁 : param이 더 안전 할뿐만 아니라 newInstance() 메소드를 통해 인터페이스를 전달할지라도 FragmentInstantiateException을 던질 수있는 데이터/인터페이스를 전달하는 조각 생성자를 무시하지 말고 읽은대로 권장하지 않습니다. .