有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Android上的外部类中存储活动的某些部分?

假设我有一个名为MainActivity.java的活动类。但是这个活动有大约3000行代码

我想将这个文件的代码部分分离到一个名为NecessaryThings.java的外部java文件(类)。但如果我在emulator上运行我的项目,它会在这个操作之后自动停止

有没有办法把这项活动的某些部分分开

为了更好,我写了一个小例子

还有你是怎么想的

使用此方法对性能有利还是有害

这是我的主要活动。爪哇

public class MainActivity extends Activity {


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

    //I want to call these lines from NecessaryThings.java
    TextView genderResult = (TextView) findViewById(R.id.genderText);
    genderResult.setText("Cinsiyet:");
    TextView calorieResult = (TextView) findViewById(R.id.remainCalorie);

    String getGenderSTR = getIntent().getStringExtra("GENDER");
    genderResult.setText(getGenderSTR);

    String calorieResultSTR = getIntent().getStringExtra("CALORIECHOOSED");
    calorieResult.setText(calorieResultSTR);

            /*
              .....
              .....
            */


}

获取上述代码后,我想将其存储在NecessaryThings.java

像这样

//All necessary imports here. There is no problem about those.

public class NecessaryThings extends Activity {

    public void myPersonalMethod() {
        TextView genderResult = (TextView) findViewById(R.id.genderText);
        genderResult.setText("Cinsiyet:");
        TextView calorieResult = (TextView) findViewById(R.id.remainCalorie);

        String getGenderSTR = getIntent().getStringExtra("GENDER");
        genderResult.setText(getGenderSTR);

        String calorieResultSTR = getIntent().getStringExtra("CALORIECHOOSED");
        calorieResult.setText(calorieResultSTR);
    }
}

如果我重新安排我的主要活动。java它将是这样的

public class MainActivity extends Activity {


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


    NecessaryThings showMyMethod = new NecassaryThings();
    showMyMethod.myPersonalMethod();


   /*
    the rest of the codes...
   */
}

但如果我分离代码,它将不起作用。我为什么要这样做,怎么做


共 (2) 个答案

  1. # 1 楼答案

    public class MainActivity extends NecessaryThings {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        myPersonalMethod();
    }
    

    NecessaryThings扩展了活动,因此MainActivity不再需要从活动扩展,它应该从NecessaryThings扩展。我需要指出的一件事是,这太棒了。onCreate(savedInstanceState);将调用onCreate();从必需的东西。因为我的个人方法();是超级班的,你可以叫它

  2. # 2 楼答案

    所有的活动都是常规Java类,当然,你可以有很多非UI类,比如Application,你可以有helpers等等。考虑到你的问题,我想告诉你,活动没有用户定义的构造函数,只能通过调用startActivity方法间接创建,但在其他方面,它是一个常见的Java类

    因此,您必须做的是,让NecessaryThings.java成为一个普通类,您可以将MainActivity中的上下文传递给它,并执行所有需要的操作

    希望这有帮助