【问题标题】:Inheritance in Java(Android Studio)Java中的继承(Android Studio)
【发布时间】:2016-08-27 12:32:19
【问题描述】:

我想制作一个测验应用,我希望在每个 Activity 中继承我的分数变量。

我不知道如何执行该任务。

这是我声明全局变量的MainActivity 代码。

public class MainActivity extends AppCompatActivity {

    public int score=0;

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

    public void start(View v)
    {
         Intent intent = new Intent(this,question1.class);
         startActivity(intent);
    }

}

这是我要继承的类:

public class question1 extends MainActivity {

    MainActivity ma= new MainActivity();
    ma.score;

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

【问题讨论】:

  • 你有什么问题?
  • 首先,您永远不会使用 new 创建新活动。您必须使用 startActivity。其次-我认为您不了解继承的作用。它看起来更像是您想要共享变量的值。这不是继承的作用。第三,没有理由为每个问题设置不同的活动类别。
  • 也不要为每个问题创建单独的活动。拥有 50 个活动并不是一个好主意。改用 Fragments + POJO 类

标签: java android inheritance


【解决方案1】:

在 Android 中,不建议您使用变量在应用程序中存储数据(使用继承也不可能做到这一点),这是一种不好的做法。

你想要做什么:

  1. 在父类中存储一些intscore
  2. 在子类继承那个score做某事

为什么这是个问题:

首先,继承此score 将不允许您在子类中以任何方式修改它。 Java 不允许您覆盖继承字段的值。有关信息,请参阅this。其次,仅仅为了获取一些数据而在类之间创建继承关系是非常徒劳的......因为继承会从父类继承所有内容,这不是你需要的。

解决办法:

相反,Android API 具有 SharedPreferencesSQLite 等功能,可为您提供存储数据的选项。

为什么?

因为将这些数据存储在SharedPreferencesSQLite 中几乎可以视为将其存储在一个全局变量 中,以便您在需要时在整个应用程序中使用它。它是一种存储,可让您随时读取/写入,并且在您的应用程序关闭时不会被破坏。

请查看this,了解有关 Android 提供的存储选项的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 2011-02-20
    • 1970-01-01
    相关资源
    最近更新 更多