3

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

我想将此文件的代码部分分离到一个名为NecessaryThings.java. 但是,如果我在模拟器上运行我的项目,它会在此操作后自行停止。

有没有办法分开这个活动的一些行?

我写了一个更好的迷你例子..

还有你怎么想的;

就性能而言,使用这种方法是有利还是有害?

这是我的 MainActivity.java

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);

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


}

Aftet 我采用上面的代码,然后我想将它存储在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);
    }
}

如果我重新排列我的 MainActivity.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...
   */
}

但如果我分开代码,它就不起作用。为什么以及我该怎么做?

4

2 回答 2

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

NecessaryThings 扩展了 Activity,因此 MainActivity 不再需要从 Activity 扩展,它应该从 NecessaryThings 扩展。我需要指出的一件事是 super.onCreate(savedInstanceState); 将调用 onCreate(); 来自必要的东西。因为我的 myPersonalMethod(); 来自超类,你可以直接调用它。

于 2013-02-26T03:11:03.203 回答
1

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

因此,你要做的是,让你NecessaryThings.java成为一个普通的班级,你可以将你的上下文传递给它,MainActivity并做所有需要的事情。

希望这可以帮助。

于 2013-02-26T03:11:04.867 回答