gpt4 book ai didi

java - "Header" View 和按钮 : how do I attach listeners to Buttons in a "header" that does not have its own Activity?

转载 作者:太空宇宙 更新时间:2023-11-03 12:43:31 25 4
gpt4 key购买 nike

我已经谈到了这个问题here ,Christopher 对此给出了答案,但我不太明白,所以我认为是时候把它变成一个真正的问题,而不仅仅是一个“跟进” =)


就目前而言,我正在编写的应用程序有 4 个不同的屏幕:

  1. 屏幕 1 - 节点列表(主屏幕)
  2. 屏幕 2 - 选项菜单,带按钮的 tableLayout
  3. 屏幕 3 - 导航
  4. 屏幕 4 - 版本等的文本详细信息

可以使用放置在顶部的“标题” View 来导航这些屏幕。然后标题有 4 个不同的按钮:

+--------------------+
| menu with buttons |
+--------------------+
| |
| |
| |
| C O N T E N T |
| |
| |
| |
+--------------------+

header 只是一个带有几个按钮的 XML 文件 (header.xml)。 header.xml 使用包含标记包含在布局中。例如,main.xml 包含以下行:

<include layout="@layout/header"></include>

header 显示正常,但问题是 - 为 header 中的按钮附加 OnClickListeners 的正确方法是什么?

克里斯托弗 pointed out你可以创建一个 Activity 类并在那里做钩子(Hook),就像这样:

public class BaseActivity extends Activity {
protected View.OnClickListener mButtonListener;

protected void setupHeaderButtons() {
findViewById(R.id.header_btn_1).setOnClickListener(mButtonListener);
// ...
findViewById(R.id.header_btn_n).setOnClickListener(mButtonListener);
}
}

public class FirstActivity extends BaseActivity {
@Override
public void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.first_activity);

// This needs to be done *after* the View has been inflated
setupHeaderButtons();
}
}

首先,我无法让它工作,因为无法从 FirstActivity 访问方法 setupHeaderButtons。其次,这样做是否正确?

最佳答案

setupHeaderButtons() 方法是 protected 的,因此它只能被扩展基类的类访问,即在这种情况下为 BaseActivity

您确定您的 FirstActivity 正在扩展 BaseActivity 吗?

关于java - "Header" View 和按钮 : how do I attach listeners to Buttons in a "header" that does not have its own Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2013865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com