使用TableRows(OnClickListener)从片段中打开片段

时间:2017-06-09 08:03:02

标签: java android fragment

我有一个有3个视图的应用程序,其中央将有一个包含多行的表。按下某一行时,左侧片段应打开,根据单击的行输入一些信息。我知道我需要在行的xml文件中设置属性(它只是onClick吗?)但是当涉及到onClick函数的放置以及当这些点击函数倾向于如何打开片段时我们会感到茫然是无效的。

我的片段代码:

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来浏览存在的三个片段。

感谢。

1 个答案:

答案 0 :(得分:0)

使用xml布局定义中的onClick属性应该是可能的,但是(imho)更常用的方法是使用view-id并在Code中设置监听器(或使用某种依赖注入作为快捷方式)。

即。您的布局定义类似于:

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

在你的java代码中......

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