【问题标题】:On Click Listeners in Fragments [duplicate]单击片段中的侦听器[重复]
【发布时间】:2017-11-09 17:11:49
【问题描述】:
我创建了一个方法,我将在我的Fragment 上链接到Button。
由于某种原因,当我将方法放入 Fragment 并转到片段的布局文件时,按钮的 on click 属性似乎无法识别该方法。当我将相同的方法放在主要的 Activity 中时,它似乎可以很好地识别该方法,但我想让这个方法存在于我的 Fragment 中。
有谁知道我如何在我的Fragment 中仍然存在该方法的同时解决此问题?
public void onClicFragment(View v)
{
}
【问题讨论】:
标签:
android
android-fragments
【解决方案1】:
如果您的Button 在您的Fragment 中,您只需在其中添加一个OnClickListener(例如在onCreateView() 中):
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.some_layout, parent, false);
Button button = (Button) view.findViewById(R.id.some_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ...
}
});
return view;
}
否则,您可以在 Activity 中定义 onClick 方法,然后从那里调用 Fragment 的相应方法:
public class MainActivity extends AppCompatActivity {
// ...
public void onClickFragment(View v) {
SomeFragment f = (SomeFragment) getFragmentManager().findFragmentByTag("SOME_TAG");
if (f != null) {
f.someMethod();
}
}
}