首页 > 解决方案 > 如何定义另一个类在 MainActivity 中调用的方法?

问题描述

我想在我创建的另一个类中定义我在 MainActivity 中拥有的方法。我在解决这个问题时遇到了问题。这甚至可能吗?我在网上找不到任何关于在另一个类中定义方法的信息。

我已经包含了我的代码和我想要如何做的例子。

我的 MainActivity 代码

package com.example.flashcards;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    DatabseHelper DB = new DatabseHelper(this);

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

        changeText();
        changeText2();
    }

    private void changeText() {
        final String[] revertText = {"H2O", "What elements does water consist of?"};

        final TextView textChange = (TextView) findViewById(R.id.flashcard1);
        Button change = (Button) findViewById(R.id.answer1);

        change.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int random = (int) (Math.random() * revertText.length);
                textChange.setText(revertText[random]);
            }
        });
    }

我的 TextC 代码(其他类)

package com.example.flashcards;

import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class TextC extends MainActivity {
    private void changeText2() {
        final String[] revertText = {"2,200° F", "How hot does lava get?"};

        final TextView textChange = (TextView) findViewById(R.id.flashcard2);
        Button change = (Button) findViewById(R.id.answer2);

        change.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int random = (int) (Math.random() * revertText.length);
                textChange.setText(revertText[random]);
            }
        });
    }
}

我在 MainActivity 中定义的方法有效,但我似乎无法让它在我的其他类中工作。我正在尝试做的事情可能吗?我想在我的 TextC 类中定义 changeText2() 方法,但在 MainActivity 中声明,因为 MainActivity 具有 onCreate() 方法。

标签: javaandroidmethods

解决方案


尝试检查 OOP 概念的继承和覆盖。由于 MainAcitivity 是父类和 TextC 子类,因此您可以访问子类中的父函数,而不是其他方式。除非您弄清楚您正在寻找的确切结构,否则您尝试做的事情是不可能的。

您可能希望在 MainActicity 中将 changeText2() 函数声明为 public 或 protected,然后在需要时覆盖其在子类中的实现。


推荐阅读