如何定义另一个类在MainActivity中调用的方法?

时间:2019-10-29 04:15:51

标签: java android methods

我想在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()方法。

2 个答案:

答案 0 :(得分:1)

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

也许您是想将changeText2()函数声明为public或在MainActicity中受保护,然后在需要时在子类中重写其实现。

答案 1 :(得分:0)

TextC类应该是MainActivity的父类,如

public class MainActivity extends TextC 

同时TextC应该扩展到AppCompactActivity,并且它的摘要应该如下所示。

public abstract class TextC extends AppCompatActivity 

如果您喜欢这样做,则可以访问TextC中存在的函数并更改TextC的名称,并将其设置为BaseClass或有意义的名称