【问题标题】:How to define a method called in MainActivity from another class?如何定义另一个类在 MainActivity 中调用的方法?
【发布时间】:2019-10-29 04:15:51
【问题描述】:

我想在我创建的另一个类中定义我在 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() 方法。

【问题讨论】:

    标签: java android methods


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      TextC 类应该是 MainActivity 的父类,如

      public class MainActivity extends TextC 
      

      同时 TextC 应该扩展到 AppCompactActivity 并且应该是抽象的,如下所示。

      public abstract class TextC extends AppCompatActivity 
      

      如果你这样做,那么你可以访问 TextC 中存在的函数并更改 TextC 的名称并将其设置为 BaseClass 或有意义的东西

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-03
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 2011-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多