【问题标题】:Android Studio - Fragment onClickListener not workingAndroid Studio - 片段 onClickListener 不起作用
【发布时间】:2017-06-15 01:45:08
【问题描述】:

查看所有可能的答案后,我找不到我的代码有什么问题。

我需要在 3 个片段上有一个 OnClickListener,其中一个由 mainActivity 加载。他们都没有工作。我已经在每个片段上实现了 OnClickListener。

这是我的代码:

RequestFragment1.java

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    view = inflater.inflate(R.layout.fragment_request1, container, false);
    Button buttonRequest1 = (Button) view.findViewById(R.id.Request1Button);
    buttonRequest1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String url = "https://www.google.ca/";
            WebView httpRequestResult = (WebView) getActivity().findViewById(R.id.webViewResult);
            httpRequestResult.getSettings().setJavaScriptEnabled(false);
            httpRequestResult.loadUrl(url);
            getActivity().setContentView(R.layout.requests_webview);
        }
    });
    return view;
}

fragment_request1.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <Button
        android:id="@+id/Request1Button"
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:text="Requête 1" />

</RelativeLayout>

MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_request1);

    View currentView = findViewById(android.R.id.content);
    //Implementation du TouchListener
    currentView.setOnTouchListener(new SwipeListener(MainActivity.this) {

需要按Request1Button打开一个webview。

感谢您的宝贵时间!

【问题讨论】:

  • 欢迎来到 Stack Overflow。为了帮助您,我们需要更多信息。你到底想让这个应用程序做什么?它现在在做什么?此外,如果您减少代码以直接关注您的问题,这将有所帮助。您可以创建一个新的 Android Studio 项目进行试验。让这个原型应用程序与单个侦听器一起工作。然后从那里开始工作。
  • 附注还要记住,Java 要求所有代码都在类中。包含这些类声明可以让我们更好地了解代码的上下文,尤其是在 Android 开发中。

标签: java android android-studio android-fragments onclicklistener


【解决方案1】:
setContentView(R.layout.fragment_request1);

MainActivity.onCreate() 中的这一行扩展了名为 fragment_request1 的 XML 文件中定义的布局。但是,它不会创建片段。因此,RequestFragment1.onCreateView() 永远不会被调用,OnClickListener 永远不会被设置。

您需要正确创建片段并使用FragmentManager 加载它。有许多在线教程展示了如何做到这一点。我建议从 Android 开发者网站上的那个开始。

【讨论】:

  • 你是对的!一旦一切都解决了,我会接受你的回答,但你是在正确的轨道上!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
  • 2023-03-30
  • 1970-01-01
  • 2020-04-03
  • 1970-01-01
相关资源
最近更新 更多