Java Android-从活动单击句柄片段
我有一个片段类,它包含一些字段Java Android-从活动单击句柄片段,java,android,android-fragments,Java,Android,Android Fragments,我有一个片段类,它包含一些字段 public class ReviewFragment extends Fragment { //... private String paramText; public String getParamText() { return paramText; } //... } 从活动中,我添加了这个片段的几个实例,并设置了这个字段值。我还将每个实例放在列表中,并设置fragment tag=“fragment0”、“fragmen
public class ReviewFragment extends Fragment {
//...
private String paramText;
public String getParamText() { return paramText; }
//...
}
从活动中,我添加了这个片段的几个实例,并设置了这个字段值。我还将每个实例放在列表中,并设置fragment tag=“fragment0”、“fragment1”等
我正在尝试获取片段标记以在我的reviewFragments列表中查找片段。问题是view.getTag()返回null,而不是“reviewN”。我试图在ReviewFragment类中编写相同的方法,但Android Studio不允许我将其附加到onClick
所以问题是,在onClick句柄方法中,我需要同时获取活动和片段。我该怎么做呢?以防你需要一堆
片段。在这种情况下,最好使用ListView
(或任何其他类型的视图,例如RecyclerView
)。您可以轻松地侦听单击事件,并根据列表项的数量执行任何操作
如果你真的需要使用片段。您可以采用不同的方法。
首先,在reviewClick(视图视图)
中,您得到的不是片段标记,而是视图标记。为什么要将视图
作为参数?
如果需要片段,您可以遵循最常用的方法在活动中使用回调方法
这里的问题是,如果不使用覆盖布局,您的Framgent
可能包含不同的视图,并且您无法直接在整个片段上获得onClick,但在这种情况下,您还必须处理layout onClick事件。
正如我已经提到的,可能的解决方案是使用回调方法
以下是实现此功能的几个步骤:
例如,在片段中创建内部接口
public interface OnReviewSelectedListener {
public void onReviewSelected(int position); }
您的activtiy现在必须实现此接口
public static class MainActivity extends Activity
implements ReviewFragment.OnReviewSelectedListener
您可以在中确定framgent
public void onReviewSelected(int position) {
if(position==YOUR_TAG) {
}
}
在ReviewFragment
中的onAttach
方法中,您必须将活动投射到界面
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mCallback = (OnReviewSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnReviewSelectedListener");
}
}
如果你真的想使用带有标签的片段,你可以在你的片段中执行以下操作
public void onCommentClick() {
// do some stuff
mCallback.onReviewSelected(getFramgentTag());
}
可以使用片段作为参数吗?不知道,我现在就试试。您能为第二个选项提供一个代码示例吗?如果您能提供您的活动和片段的完整代码就更好了。因为我可以询问您是否要实现注释/评论,并单击“使用此注释执行某些操作”?我无法将带有片段参数的方法附加到onClick,存在运行时异常。Android studio生成的代码与您提供的代码类似,是的,我认为这正是我需要的,我将尝试这种方式。这是一个非常糟糕的代码,我想当你看到它时,你会感到悲伤:(是的,我已经实现了简短的评论,我想在用户点击简短版本时显示另一个评论全文的活动。我已经编辑了我的帖子,请看一看。如果你有任何问题,请随时提问。
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mCallback = (OnReviewSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnReviewSelectedListener");
}
}
public void onCommentClick() {
// do some stuff
mCallback.onReviewSelected(getFramgentTag());
}