首先,就像这么多,我刚刚开始尝试学习Java和Android开发。我正在学习一些教程等等。无论如何,我试图做一些可能非常简单的事情,但我不确定要完成的语法,因此,不确定如何在互联网上搜索任何成功。
我的问题:我有一个“Main.java”文件和第二个“Tabs.java”。 main具有您对默认存根的所有期望:
package com.example.main;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class Main extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
我的Tabs.java看起来像:
package com.example.main;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
public class Tabs extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabs);
//Initiate tabs
TabHost th = (TabHost)findViewById(R.id.tabhost);
th.setup();
//Create tab1
TabSpec specs = th.newTabSpec("tag1");
specs.setContent(R.id.tab1);
specs.setIndicator("Reservation List");
th.addTab(specs);
}
}
我希望在程序启动时启动此选项卡类,以设置选项卡式视图。我可以将它扔进主类,但我想我会尝试通过将它们分开来保持代码更整洁。我怎样才能完成这个?
答案 0 :(得分:2)
“回答”是一个坏主意。但是,我认为值得解释为什么这是一个坏主意。听起来你混淆了两个基本概念 - 一个class
的概念,它存在于面向对象的语言中,如Java
,以及一个android Activity
。
Activity
非常像一个单独的程序。它包含执行特定任务所需的所有(或至少大部分)材料。应用程序可以组合多种活动来处理多种任务 - 例如,在消息传递应用程序中,您可能有一个活动显示用户联系人,另一个活动允许您向他们发送消息。这些活动是分开的。您可以使用Intents
在@codeMagic之间传输数据,但大多数情况下每个Activity
都是自包含的。
class
是面向对象编程的概念,用作创建该类型对象的蓝图。 Oracle Java documentation提供了这个概念的一个很好的例子。类是有用的,因为它们允许您设置一种可在以后在应用程序中使用的对象的属性,从而大大提高了灵活性。
上面引用的聊天应用程序示例是了解使用类的位置/方式的好方法。在该情况下,当您必须显示某人的联系人列表时,您将无法提前知道将包含在该列表中的每个用户,您将提供哪些信息或将有多少个人。要处理这种情况,您将创建一个名为class
的用户。用户类将包含您要显示的有关特定人员的所有详细信息。也许这会包括他们的姓名,地址,电话号码等。您可以设置一般适用于所有用户的属性列表,然后创建用户类的单个实例,并为要显示的每个人填写提供的数据。
简而言之 - 您的活动与class
的工作方式不同(但请参阅Fragments,其行为类似)。对于您要执行的操作,请在主活动中创建选项卡。