我想在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()方法。
答案 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或有意义的名称