Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:如何跟踪在将数据传输到另一个片段时单击的多个按钮_Android - Fatal编程技术网

Android:如何跟踪在将数据传输到另一个片段时单击的多个按钮

Android:如何跟踪在将数据传输到另一个片段时单击的多个按钮,android,Android,你好,我是android编程新手, 我有这个xml文件及其相关的java片段类 <?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" >

你好,我是android编程新手, 我有这个xml文件及其相关的java片段类

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

问题,当我将数据传输到另一个片段时,如何跟踪单击的按钮

请帮忙

当我将数据传输到另一个片段时,如何跟踪单击的按钮

正如所理解的,您正在寻找片段间数据传输。让您的父活动通过接口处理此传输(或您想要的任何其他操作):

public interface InterFragmentDataTransferer {
     public void btnListener(String dataStr1, String dataStr2);
     // You may define here as many other methods as you need.
}
然后,在父活动中实现此接口,用所需的操作覆盖方法并最终实例化片段:

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.
    }
}
最后,您将在片段的onAttach方法内的调用者片段内获得接口实例,该实例可用于传递数据:

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;
          }
    }
}
额外提示:不要重写片段构造函数来传递任何数据/接口,这可能会引发FragmentInstanceException,尽管通过newInstance()方法作为param传递接口更安全,但正如我所读到的,也不推荐这样做