java - 在 fragment 而不是 main 中有按钮操作

标签 java android

我有一个 Android 应用程序,我在其中使用选项卡(使用 ActionBarSherlock)。所以我的主要 Activity 为我创建了选项卡,然后我从那里加载了 fragment 布局。

在我的 MainActivity.java 中,我创建了一个选项卡(这只是一个 fragment ):

mTabsAdapter = new TabsAdapter(this, mViewPager);

mTabsAdapter.addTab(
    bar.newTab().setText("Fragment 1"),
    MainMenuFragment.class, null);

我的 MainMenu.java 看起来像这样:

public class MainMenuFragment extends SherlockFragment
{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.mainmenu_fragment, container, false);

        return view;
    }

    public void showMainMenu(View view)
    {
        Log.e("app", "olol: button!"); // never called!!
    }
}

这是mainmenu_fragment

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000" >

    <Button
        android:id="@+id/btnMenu"
        android:layout_width="170dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="41dp"
        android:text="@string/mainmenu"
        android:onClick="showMainMenu" />
</RelativeLayout>

现在我所要做的就是将方法 showMainMenu(View view) 放在某个地方。我认为这会进入相应的 java 文件(在我的例子中是 MainMenuFragment.java)。但只有当我将方法放入 MainAvtivity.java 文件时它才有效。

这意味着来自各种 fragment 布局的所有按钮操作都将放在一个(主)java 文件中。为什么我不能简单地将它放在调用 Fragment 布局的 java 文件中......??

最佳答案

简短的回答是(就像已经指出的那样),你不能。

唯一的方法是创建一个 onClick 事件监听器。在 onCreate 方法中的 MainMenuFragment.java 中,执行如下操作:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState)
{
    View view = inflater.inflate(R.layout.scan_fragment, container, false);

    Button menuButton = (Button)view.findViewById(R.id.btnMenu);
    menuButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Log.e("app", "onclick listener");
        }
    });

    return view;
}

您可以从布局 xml 中删除 onClick 属性。

关于java - 在 fragment 而不是 main 中有按钮操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11607888/

相关文章:

java - Android如何防止软键盘并将按钮定义为textEdits的输入

java - 使用反射获取私有(private)非原始字段的值

android - 如何从任何其他应用程序打开内置的谷歌日历?

java - 使用 Maven 构建项目时缺少 JUNIT Jar 异常

java - 如何运行 java -cp 命令

android - Visual Studio Android 模拟器不安装配置文件

Android 如何以编程方式添加/配置 Exchange 设置?

android - 帮助 Android 增强现实

java - 如何从本地拷贝文件分享给JCifs?

java.lang.NoSuchFieldError : namingStrategy