我有一个 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/