gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:11:06 25 4
gpt4 key购买 nike

大家好,我是 android 编程的新手,我有这个 xml 文件及其关联的 java fragment 类

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

问题,当我将数据传输到另一个 fragment 时,如何跟踪被点击的按钮

请帮忙

最佳答案

how do I keep the track of the buttons that were click, when I transfer the data to another fragment

据了解,您正在寻找 fragment 间数据传输。让您的父 Activity 通过界面处理此传输(或您想要的任何其他操作):

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

然后,在您的父 Activity 中实现此接口(interface),使用所需的操作覆盖方法并最终实例化您的 fragment :

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.
}
}

最后,您将在 fragment 的onAttach 方法中获取调用者 fragment 中的接口(interface)实例,可用于传递数据:

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;
}
}
}

额外提示:不要重写 fragment 构造函数来传递任何数据/接口(interface),这可能会抛出 FragmentInstantiateException,虽然通过 newInstance() 方法作为参数传递接口(interface)更安全,但也不推荐正如我所读到的。

关于Android:如何跟踪将数据传输到另一个 fragment 时单击的多个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20965373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com