-2

我创建了 header.xml 并因此包含在 Main.xml 和 Menu.xml 中。在 header.xml 我有一个按钮。

标头.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"

>
    <ImageView
        android:layout_width="150dp"
        android:layout_height="100dp"
        android:src="@drawable/logo"
        android:id="@+id/header"
        android:paddingTop="10px"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/insideButtons">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Main Menu"
            android:gravity="right"
            android:layout_marginRight="50px"
            android:id="@+id/mainMenu"
            android:textColor="#604811"
            android:textSize="20dp"

            />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="About University"
            android:gravity="right"
            android:layout_marginRight="50px"
            android:id="@+id/about"
            android:textColor="#604811"
            />

    </LinearLayout>

我想知道我如何从主要活动和菜单活动中访问此按钮。我正在使用以下代码,但它不起作用。

TextView btn;
public class Header extends AppCompatActivity  {

TextView home;



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


    home = (TextView) findViewById(R.id.mainMenu);

    home.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

             Intent i = new Intent(getApplicationContext(),Menu.class);
            startActivity(i);
        }
    });

}}
4

3 回答 3

0

你需要它的父母的 id 来得到:

假设R.id.parent_view是 的父级R.id.nested_button

View parent= findViewById(R.id.parent_view);
Button nestedButton= (Button) parent.findViewById(R.id.nested_button);
nestedButton.setText("Whatever");
于 2017-04-10T09:01:25.560 回答
0

使用 findViewById 查找包含的布局,然后使用 findViewById 在该视图上查找按钮。

View includeView=findViewById("包含布局的Id"); 按钮 btn=includeView.findViewById(R.id.mainBtn);

于 2017-04-10T09:03:35.403 回答
0

解决方案 1

将此添加到您的 Main.xml

<include
    layout="@layout/header.xml"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

使用 Main.java 中的以下代码以相同的方式访问它,看看它是否有效。

TextView home;

home= (TextView) findViewById(R.id.mainMenu);

home.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        Intent i = new Intent(getApplicationContext(),Menu.class);
        startActivity(i);
    }
});

上面所做的将允许您通过直接引用它们的 id 从 Main.java 访问 header.xml 的所有元素。您所要做的就是正确地包含 xml,然后您可以通过它们各自的 id 直接访问其组件。

解决方案 2

将此用于要为其设置 onClick 的按钮或文本视图

<Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="changeActivity"
        android:text="button1" />

然后为单击它时发生的情况创建一个相应的函数。

public void changeActivity(View view)
    {
        Intent intent = new Intent(FromActivity.this, ToActivity.class);
        startActivity(intent);
    }
于 2017-04-10T09:05:02.760 回答