TabLayout 예제가 많은데요.

탭밑의 프레임(실제 화면 나오는곳)에 여러가지 다양한 기능을 하는 엑티비티를 넣을려면 어떻게 해야하나요?

제가 LinearLayout으로 만들었다가 TabLayout 으로 만들려고 시도해봤는데요.

예제에는 그냥 택스트만 넣고, 에디트박스 하나넣는 식의 간단한 예제만 있는데 에디트박스에서 글을 입력해서 저장하고 그런건 다 어디에 구현해야하나요.....

SongsActivity등의 탭에 들어가는 엑티비티가 따로 레이아웃을 가지고 있으면 안되나요?

혹시 좀 더 자세한 예제 있나요...

 

1. com.example.hellotabwidget

 (1) ArtistsActivity.java, AlbumsActivity.java, SongsActivity.java : Tab에서 보여질 각각의 Activity
------------------------------------------------------------------------------------
package com.example.hellotabwidget;

import!! android.app.*;
import!! android.os.*;
import!! android.widget.*;

public class ArtistsActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView textview = new TextView(this);
        textview.setText("This is the Artists tab");
        setContentView(textview);
    }
}
------------------------------------------------------------------------------------
package com.example.hellotabwidget;

import!! android.app.*;
import!! android.os.*;
import!! android.widget.*;

public class AlbumsActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView textview = new TextView(this);
        textview.setText("This is the Albums tab");
        setContentView(textview);
    }
}
------------------------------------------------------------------------------------
package com.example.hellotabwidget;

import!! android.app.*;
import!! android.os.*;
import!! android.widget.*;

public class SongsActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView textview = new TextView(this);
        textview.setText("This is the Songs tab");
        setContentView(textview);
    }
}
------------------------------------------------------------------------------------
- onCreate : Activity가 처음 생성될때 호출되는 메소드 
- TextView tv = new TextView(this): TextView 클레스 생성
- tv.setText("Hello, Android") : TextView 클레스 출력내용 지정
- setContentView(R.layout.main) : layout resource를 activity content에  설정 메소드

(2) HelloTabWidget.java
------------------------------------------------------------------------------------
package com.example.hellotabwidget;

import!! android.app.*;
import!! android.content.*;
import!! android.content.res.*;
import!! android.os.*;
import!! android.widget.*;

public class HelloTabWidget extends TabActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Resources res = getResources(); // Resource object to get Drawables
        TabHost tabHost = getTabHost();  // The activity TabHost
        TabHost.TabSpec spec;  // Resusable TabSpec for each tab
        Intent intent;  // Reusable Intent for each tab

        // Create an Intent to launch an Activity for the tab (to be reused)
        intent = new Intent().setClass(this, ArtistsActivity.class);

        // Initialize a TabSpec for each tab and add it to the TabHost
        spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                          res.getDrawable(R.drawable.ic_tab_artists))
                      .setContent(intent);
        tabHost.addTab(spec);

        // Do the same for the other tabs
        intent = new Intent().setClass(this, AlbumsActivity.class);
        spec = tabHost.newTabSpec("albums").setIndicator("Albums",
                          res.getDrawable(R.drawable.ic_tab_albums))
                      .setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, SongsActivity.class);
        spec = tabHost.newTabSpec("songs").setIndicator("Songs",
                          res.getDrawable(R.drawable.ic_tab_songs))
                      .setContent(intent);
        tabHost.addTab(spec);

        tabHost.setCurrentTab(2);
    }
}
------------------------------------------------------------------------------------
- onCreate : Activity가 처음 생성될때 호출되는 메소드 
- setContentView(R.layout.main) :  layout resource를 activity content에  설정 메소드
- Resources res = getResources() : Resource 읽어온다.
- TabHost tabHost = getTabHost() : 텝들의폼을 TabHost객체등록
- TabHost.TabSpec spec : 각각의텝이 지닐 기능을 정할 spec을 tabspec객체 등록
- Intent intent : 각각의 텝이 어떤 Activity를 보여줄지 결정하는 정보를 담는 intent객체 등록
- intent = new Intent().setClass(this, ArtistsActivity.class) : subActivity class로 intent객체로 생성
- spec = tabHost.newTabSpec().setIndicator() : spec을 만들고 탭을 구별할 테그등록 및 drawable을 지정
- setContent(intent) : 텝에 intent등록
- tabHost.addTab(spec) : tabhost에 텝등록

2. drawable
(1) ic_tab_artists.xml, ic_tab_albums.xml, ic_tab_songs.xml : 각각의 Activity에 연결될  layout resource
------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/ic_tab_artists_grey"
          android:state_selected="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/ic_tab_artists_white" />
</selector>
------------------------------------------------------------------------------------
- android:drawable  : 이미지와 같은 비주얼 엘리먼트
- 선택시(selected), 비선택시 (not selected)에 따라 표시이미지가 분리


3. main.xml
------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp">
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="5dp" />
    </LinearLayout>
</TabHost>
------------------------------------------------------------------------------------
- android:id="@+id/gridview" : 클레스의 이름을 지정
- android:layout_width :  layout 너비설정
 wrap_content: 뷰가 그릴만큼의 크기 , fill_parent : 부모가 갖는모든 크기
- android:layout_height : layout 높이설정 
 wrap_content: 뷰가 그릴만큼의 크기 , fill_parent : 부모가 갖는모든 크기
- android:orientation : column layout(horizontal) 인지 row layout(vertical) 인지 설정
- android:padding : 뷰와 내용물간의 간격

4. AndroidManifest.xml
------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.hellotabwidget"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".HelloTabWidget" android:label="@string/app_name"
                  android:theme="@android:style/Theme.NoTitleBar">                  
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    <activity android:name="AlbumsActivity"></activity>
<activity android:name="ArtistsActivity"></activity>
<activity android:name="SongsActivity"></activity>
</application>
</manifest> 
------------------------------------------------------------------------------------
android:theme="@android:style/Theme.NoTitleBar" : 테마(애플리케이션의 전체적인 분이기)설정