Java 使用TableRows(OnClickListener)从片段中打开片段
我有一个应用程序,有3个视图,其中的中心将有一个有几行的表。当按下某一行时,左边的片段应该打开,并根据单击的行传递一些信息。我知道我需要在xml文件中为行设置属性(是否只是onClick?),但在onClick函数的位置以及如何在这些单击函数往往是无效函数时打开片段方面,我感到不知所措 我的片段代码:Java 使用TableRows(OnClickListener)从片段中打开片段,java,android,fragment,Java,Android,Fragment,我有一个应用程序,有3个视图,其中的中心将有一个有几行的表。当按下某一行时,左边的片段应该打开,并根据单击的行传递一些信息。我知道我需要在xml文件中为行设置属性(是否只是onClick?),但在onClick函数的位置以及如何在这些单击函数往往是无效函数时打开片段方面,我感到不知所措 我的片段代码: import ...; //for brevity public class ChatFragment extends Fragment { @Nullable @Override
import ...; //for brevity
public class ChatFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.chat_fragment_layout, container, false);
return rootView;
}
}
如果有帮助的话,我的另一个片段叫做MessageFragment,我正在使用PagerAdapter浏览现有的三个片段
谢谢。在xml布局定义中使用onClick属性应该是可能的,但是(imho)更常见的方法是使用视图ID并在代码中设置侦听器(或者使用某种依赖项注入作为快捷方式) 即,布局定义类似于:
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow
android:id="@+id/table_row_1" <!-- Set the id here to something unique! -->
>
<!-- something -->
</TableRow>
</TableLayout>
这是我第一次尝试的,在这里有Log.d行,我写了一些代码来打开一个新片段,这导致了一个错误,说函数是空的,因此不能返回一些东西。有什么想法吗?嘿,这听起来像是一个非常简单的编译时错误。将代码添加到问题中如何打开新片段!我设法找到了克服void函数的方法,但是我打开的新片段似乎与当前片段没有完全重叠。不过谢谢你的帮助,我想我现在找到了办法。嘿,你还能发布你的最终解决方案吗?此外,重叠问题似乎与这个问题不同。祝你好运
public class ChatFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.chat_fragment_layout, container, false);
// find the view by using its id and set a listener
rootView.findViewById(R.id.table_row_1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("ChatFragment", "Hey, the user clicked table_row_1 !");
}
});
return rootView;
}
}