【问题标题】: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();
        }
    }
}

【讨论】:

  • 好吧,我在片段中创建了一个监听器,但是获取引用有点尴尬。这通常是您可以获得片段引用的地方,还是我应该在 onCreateView 之后的某个地方获得引用。 puu.sh/we8sn/2eeb980e79.png
  • @BrandonLavigne 代码没问题。
  • 好的,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多