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...
*/
}
但如果我分离代码,它将不起作用。我为什么要这样做,怎么做强>
# 1 楼答案
NecessaryThings扩展了活动,因此MainActivity不再需要从活动扩展,它应该从NecessaryThings扩展。我需要指出的一件事是,这太棒了。onCreate(savedInstanceState);将调用onCreate();从必需的东西。因为我的个人方法();是超级班的,你可以叫它
# 2 楼答案
所有的活动都是常规Java类,当然,你可以有很多非UI类,比如
Application
,你可以有helpers
等等。考虑到你的问题,我想告诉你,活动没有用户定义的构造函数,只能通过调用startActivity
方法间接创建,但在其他方面,它是一个常见的Java类因此,您必须做的是,让
NecessaryThings.java
成为一个普通类,您可以将MainActivity
中的上下文传递给它,并执行所有需要的操作希望这有帮助