我正試圖創建一個具有多個活動的選項卡式界面。作爲標籤的一部分,我已經創建並設置一個XML文件tabhost像這樣:如何在使用製表符時設置新的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
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<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>
這就是所謂的在我的Tabs.class文件,該文件是這樣的:
package com.system.kenetix;
import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;
public class Tabs extends TabActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabs);
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, Availability.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("Availability").setIndicator("Booking",
res.getDrawable(R.drawable.kenetix_tab_available))
.setContent(intent);
tabHost.addTab(spec);
// Do the same for the other tabs
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, RoomsAvailable.class);
spec = tabHost.newTabSpec("Room").setIndicator("Rooms",
res.getDrawable(R.drawable.kinetix_tab_rooms))
.setContent(intent);
tabHost.addTab(spec);
// Do the same for the other tabs
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, CustomerDetails.class);
spec = tabHost.newTabSpec("Customer").setIndicator("Customer",
res.getDrawable(R.drawable.kinetix_tab_customer))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, Payment.class);
spec = tabHost.newTabSpec("Payment").setIndicator("Payment",
res.getDrawable(R.drawable.kinetix_tab_payment))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, Extras.class);
spec = tabHost.newTabSpec("Extras").setIndicator("Extras",
res.getDrawable(R.drawable.kinetix_tab_extras))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
然後,我有個人類我的每個標籤和一個XML文件來設置內容(按鈕,旋轉器等),像這樣:
package com.system.kenetix;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;
public class Availability extends Activity {
/** Called when the activity is first created. */
Intent intent = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.availability);
/*Nights Spinner*/
//Create an instance of the Number of Nights spinner
Spinner NumNightsSpinner = (Spinner) findViewById(R.id.NumAdultsSpinner);
//Create an ArrayAdapter for the Number of Nights spinner
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.NumNights_array, android.R.layout.simple_spinner_item);
//Set the adapter layout
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Apply the adapter layout to the Number of Nights spinner
NumNightsSpinner.setAdapter(adapter);
NumNightsSpinner.setOnItemSelectedListener(new MyOnNumNightsSelectedListener());
/*Adults Spinner*/
//Create an instance of the Number of Adults spinner
Spinner NumAdultsSpinner = (Spinner) findViewById(R.id.NumAdultsSpinner);
//Create an ArrayAdapter for the Number of adults spinner
ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(this, R.array.NumAdults_array, android.R.layout.simple_spinner_item);
//Set the adapter layout
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Apply the adapter layout to the Number of Adults spinner
NumAdultsSpinner.setAdapter(adapter);
NumAdultsSpinner.setOnItemSelectedListener(new MyOnNumAdultsSelectedListener());
/*Children Spinner*/
//Create an instance of the Number of Children spinner
Spinner NumChildSpinner = (Spinner) findViewById(R.id.NumChildSpinner);
//Create an ArrayAdapter for the Number of Children spinner
ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this, R.array.NumChild_array, android.R.layout.simple_spinner_item);
//Set the adapter layout
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Apply the adapter layout to the Number of Children spinner
NumChildSpinner.setAdapter(adapter);
NumChildSpinner.setOnItemSelectedListener(new MyOnNumChildSelectedListener());
Button CheckAvailable = (Button) findViewById(R.id.CheckAvailabilityBtn);
CheckAvailable.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
intent = new Intent(v.getContext(), RoomsAvailable.class);
startActivity(intent);
}
});
}
//Listener for the selected item from the number of nights spinner
public class MyOnNumNightsSelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent,View view, int pos, long id){
//If no number of nights has been selected or onCreate occurs cancel the toast
if (parent.getItemAtPosition(pos).toString().equals("0")){
Toast.makeText(parent.getContext(), "You selected " + parent.getItemAtPosition(pos).toString() + " night(s)", Toast.LENGTH_LONG).cancel();
}
//Else create a toast stating the number of nights selected
else{
Toast.makeText(parent.getContext(), "You selected " + parent.getItemAtPosition(pos).toString() + " night(s)", Toast.LENGTH_LONG).show();
}
}
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
}
//Listener for the selected item from the number of adults spinner
public class MyOnNumAdultsSelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent,View view, int pos, long id){
//If no number of nights has been selected or onCreate occurs cancel the toast
if (parent.getItemAtPosition(pos).toString().equals("0")){
Toast.makeText(parent.getContext(), "You selected " + parent.getItemAtPosition(pos).toString() + " adults", Toast.LENGTH_LONG).cancel();
}
else if (parent.getItemAtPosition(pos).toString().equals("1")){
Toast.makeText(parent.getContext(), "You selected " + parent.getItemAtPosition(pos).toString() + " adult", Toast.LENGTH_LONG).cancel();
}
//Else create a toast stating the number of nights selected
else{
Toast.makeText(parent.getContext(), "You selected " + parent.getItemAtPosition(pos).toString() + " adult(s)", Toast.LENGTH_LONG).show();
}
}
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
//Do Nothing
}
}
//Listener for the selected item from the number of adults spinner
public class MyOnNumChildSelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent,View view, int pos, long id){
//If no number of nights has been selected or onCreate occurs cancel the toast
if (parent.getItemAtPosition(pos).toString().equals("0")){
Toast.makeText(parent.getContext(), "You selected " + parent.getItemAtPosition(pos).toString() + " children", Toast.LENGTH_LONG).cancel();
}
else if (parent.getItemAtPosition(pos).toString().equals("1")){
Toast.makeText(parent.getContext(), "You selected " + parent.getItemAtPosition(pos).toString() + " child", Toast.LENGTH_LONG).show();
}
//Else create a toast stating the number of nights selected
else{
Toast.makeText(parent.getContext(), "You selected " + parent.getItemAtPosition(pos).toString() + " children", Toast.LENGTH_LONG).show();
}
}
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
//Do Nothing
}
}
}
,並與此而來的XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1" android:background="@color/custom_theme_color"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:baselineAligned="false" android:orientation="vertical">
<TableLayout android:layout_width="wrap_content"
android:layout_alignParentLeft="true" android:layout_height="wrap_content"
android:id="@+id/tableLayout1" android:stretchColumns="1"
android:layout_weight="1">
<TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageButton android:src="@drawable/icon"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:id="@+id/QuickRoomSelect" android:layout_weight="1" />
<ImageButton android:src="@drawable/icon"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:id="@+id/QuickCustomerDetails" android:layout_weight="1" />
<ImageButton android:src="@drawable/icon"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:id="@+id/imageButton1" android:layout_weight="1" />
</TableRow>
</TableLayout>
<TextView android:layout_width="match_parent"
android:textColor="@color/custom_theme_text_color" android:id="@+id/availabilityLbl"
android:text="@string/AvailableLbl" android:layout_height="wrap_content"
android:layout_weight="1" />
<Button android:layout_height="wrap_content" android:id="@+id/DateFromBtn"
android:layout_width="match_parent" android:text="@string/DateFromBtn"
android:layout_weight="1" />
<TextView android:textColor="@color/custom_theme_text_color"
android:layout_height="wrap_content" android:id="@+id/NumNightsLdl"
android:text="@string/NumNightsLbl" android:layout_width="wrap_content"
android:layout_weight="1"></TextView>
<Spinner android:layout_height="wrap_content" android:id="@+id/NumAdultsSpinner"
android:layout_width="wrap_content" android:layout_weight="1"></Spinner>
<TableLayout android:layout_height="wrap_content"
android:id="@+id/tableLayout2" android:layout_width="match_parent"
android:layout_weight="1">
<TableRow android:id="@+id/tableRow3" android:layout_height="wrap_content"
android:layout_width="match_parent" android:layout_weight="1">
<TextView android:textColor="@color/custom_theme_text_color"
android:layout_height="wrap_content" android:id="@+id/NumAdultsLbl"
android:text="@string/NumAdultsLbl" android:layout_weight="2"></TextView>
<TextView android:textColor="@color/custom_theme_text_color"
android:layout_height="wrap_content" android:id="@+id/NumChildLbl"
android:layout_weight="2" android:text="@string/NumChildLbl"></TextView>
</TableRow>
<TableRow android:id="@+id/tableRow2" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_weight="1">
<Spinner android:layout_height="wrap_content" android:id="@+id/NumNightsSpinner"
android:layout_width="wrap_content" android:layout_weight="1"></Spinner>
<Spinner android:layout_height="wrap_content" android:id="@+id/NumChildSpinner"
android:layout_width="wrap_content" android:layout_weight="1"></Spinner>
</TableRow>
</TableLayout>
<Button android:layout_width="match_parent" android:id="@+id/CheckAvailabilityBtn"
android:layout_height="wrap_content" android:text="@string/CheckAvailableBtn"
android:layout_weight="1" />
</LinearLayout>
基本上我需要知道的是如何讓Availability.class
文件使用第二個xml文件?我能看到的所有標籤都很棒! 我不想在主代碼中創建按鈕等,因爲我試圖儘可能保持OO。我看過的所有示例都使用tabs.xml來佈置活動,如果您希望每個選項卡具有相同的信息,或者佈局的內容直接寫入到java類中,那麼這個示例非常棒。
是否有可能做我想要的東西?如果有的話,有人可以告訴我如何做到這一點或將我連接到某個地方?
謝謝你指出那個錯誤,我試過了,但還是沒有成功。 tab.xml看起來很好,因爲我能夠查看選項卡,它的活動內容中沒有顯示的內容。我正在使用另一個xml文件來保存這些信息。 對不起,我在我的解釋中沒有很強的技術性:( – alsobubbly 2011-03-17 23:43:00
真的嗎?該死,我不確定那麼我的代碼老實說是完全一樣的方式嘿,你把第二個活動添加到清單中了嗎 – Klaus 2011-03-18 05:56:05
是的我我補充說,我不需要對它做任何事情嗎?我有<活動android:name =「Availability」/> – alsobubbly 2011-03-18 15:09:46