首页 > 解决方案 > 如何从 android studio 中的 MainActivity.java 访问 XML GUI 对象?

问题描述

我想在我的 Android 应用程序代码中添加一个按钮单击事件。

这是我的代码:

package com.example.myapplication;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;

import android.view.MenuItem;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.navigation.fragment.NavHostFragment;

public class FirstFragment extends Fragment {

    @Override
    public View onCreateView(
            LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState
    ) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_first, container, false);
    }

    public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        view.findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                NavHostFragment.findNavController(FirstFragment.this)
                        .navigate(R.id.action_FirstFragment_to_SecondFragment);
            }
        });
    }

    public void button1_Click(View view)
    {
        EditText editTextNumber = (EditText)findViewById(R.id.editTextNumber);
    }
}

它说 findViewById 是未定义的。我怎样才能解决这个问题?

感谢您所有的帮助。它工作正常。

标签: android-studio

解决方案


您可以使用 setText 方法通过单击按钮来更改文本框的文本:

public void onBtnChangeText(View view) {
    EditText editText = (EditText)findViewById(R.id.simpleEditText);
    editText.setText("New text");
}

我的xml文件是:

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#0390FF"
        android:onClick="onBtnChangeText"
        android:text="Click to change text"
        android:textAllCaps="false"
        android:textSize="20sp" />

<EditText
        android:id="@+id/simpleEditText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Old text"
        android:gravity="center"/>

单击按钮时,文本将从“旧文本”更改为“新文本”:

旧文本

新文本


推荐阅读