Java 活动的某些部分如何';Android上的外部类中的存储?
假设我有一个名为Java 活动的某些部分如何';Android上的外部类中的存储?,java,android,class,methods,android-activity,Java,Android,Class,Methods,Android Activity,假设我有一个名为MainActivity.java的活动类。但是这个活动有大约3000行代码 我想将此文件的代码部分分离到名为NecessaryThings.java的外部java文件(类)。但如果我在emulator上运行我的项目,它会在这个操作之后自动停止 有没有办法把这项活动的某些部分分开 为了更好,我写了一个小例子 还有你是怎么想的 使用此方法对性能有利还是有害? 这是我的MainActivity.java 获取上述代码后,我想将其存储在needessarythings.java 像这
MainActivity.java
的活动类。但是这个活动有大约3000行代码
我想将此文件的代码部分分离到名为NecessaryThings.java
的外部java文件(类)。但如果我在emulator上运行我的项目,它会在这个操作之后自动停止
有没有办法把这项活动的某些部分分开
为了更好,我写了一个小例子
还有你是怎么想的
使用此方法对性能有利还是有害?
这是我的MainActivity.java
获取上述代码后,我想将其存储在
needessarythings.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 NecessaryThings {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myPersonalMethod();
}
NecessaryThings扩展了活动,因此MainActivity不再需要从活动扩展,它应该从NecessaryThings扩展。我需要指出的一点是super.onCreate(savedInstanceState);将调用onCreate();从必需的东西。因为我的个人方法();是来自super class,您可以直接调用它。所有活动都是常规Java类,您可以-当然,有许多非UI类,如
应用程序
,您可以有助手
等。查看您的问题,我想告诉您,活动没有用户定义的构造函数,只能通过调用startActivity
方法间接创建,但在其他方面,它是一个常见的Java类
因此,您必须做的是,让needessarythings.java
成为一个普通类,您可以将main活动中的上下文传递给它,并执行所有需要的操作
希望这能有所帮助。@A--C为什么?逻辑是什么,我不明白。因为没有人在他们的回答中提到:活动有一个(复杂的)生命周期和启动过程。如果您使用构造函数来实例化您的活动,那么您有一个“不完整”的活动,因此,您得到FCs@hakiko:您的逻辑是错误的Activity不仅仅是java类,而是创建Activity cerate的实例一个单独的类,用于在Activities@ρцσѕρєK之间共享方法您是对的。但如果我不分离方法、意图等,我的活动的可管理性就会降低。有时我会迷失在密码中。如果我将我的活动与其他课程分开,我有优势/劣势吗?是的!这就是答案:)首先我尝试了多个扩展,然后我了解到,java不支持多个扩展。谢谢。这个问题已经解决了,好吗。但我做了之后,我有什么优点/缺点吗?这要看情况而定。如果你有很多不必要的东西,那么就没有太多的劣势。你应该把它命名为BaseActivity
其他人就是这么做的。如果我只在外部类中保存布局相关的东西,比如TextView和Button对象,会发生什么?这是一个好方法吗?只有当您的所有扩展活动都需要这些方法时。这取决于你想做什么。
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...
*/
}
public class MainActivity extends NecessaryThings {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myPersonalMethod();
}