ActionBarTest、FragmentTest

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="hyz.com.actionbar"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="14" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".ActionBarTabs" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

ActionBarTabs.java

package hyz.com.actionbar;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class ActionBarTabs extends Activity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.action_bar_tabs);    
        
        ActionBar bar = getActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
        //bar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);

        String text = "FRAGMENT01" ;
        bar.addTab(bar.newTab()
                .setText(text)
                .setTabListener(new TabListener(new Fragment01())));
        
        text = "FRAGMENT02" ;
        bar.addTab(bar.newTab()
                .setText(text)
                .setTabListener(new TabListener(new Fragment02())));
    }
    private class TabListener implements ActionBar.TabListener 
    {
        private Fragment mFragment;
        public TabListener(Fragment fragment) 
        {
            mFragment = fragment;          
        }
        public void onTabSelected(Tab tab, FragmentTransaction ft) 
        {
            //ft.add(R.id.fragment_content, mFragment, mFragment.getText());
            //ft.add(R.id.fragment_content, mFragment); 當橫豎切換時,用add會顯示多個activity的佈局
           ft.replace(R.id.fragment_content, mFragment);      
        }
        public void onTabUnselected(Tab tab, FragmentTransaction ft) 
        {
            ft.remove(mFragment);
        }
        public void onTabReselected(Tab tab, FragmentTransaction ft) 
        {
            Toast.makeText(ActionBarTabs.this, "Reselected!", Toast.LENGTH_SHORT).show();
        }
    }
    //Activity裏和Fragment裏此函數不一樣
	@Override
	public boolean onCreateOptionsMenu(Menu menu) 
	{
		//menu.add("ActionBarTabs").setIcon(R.drawable.icon).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
		//通過佈局創建菜單
		getMenuInflater().inflate(R.menu.menu, menu);
		return super.onCreateOptionsMenu(menu);
	}
	@Override
	public boolean onOptionsItemSelected(MenuItem item)
	{		
		return super.onOptionsItemSelected(item);
	}    
}


 

Fragment01.java

package hyz.com.actionbar;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class Fragment01 extends Fragment implements OnClickListener
{
//        private String mText;
//        public Fragment01(String text) 
//        {
//            mText = text;
//        }
//        public String getText() 
//        {
//            return mText;
//        }
		@Override
		public void onCreate(Bundle savedInstanceState) 
		{
			super.onCreate(savedInstanceState);
			//加此句話onCreateOptionsMenu()就能在Fragment中創建菜單了
			setHasOptionsMenu(true);		
		}
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {        	
          View fragView = inflater.inflate(R.layout.fragment01, container, false);
          Button button = (Button) fragView.findViewById(R.id.fragment01);
          button.setOnClickListener(this);          
          return fragView;
        }
		@Override
		public void onClick(View v) 
		{
			Toast.makeText(getActivity(), "don't click fragment01", Toast.LENGTH_SHORT).show();			
		}
		@Override
		public boolean onOptionsItemSelected(MenuItem item)
		{				
			return super.onOptionsItemSelected(item);	
		}
		@Override
		public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
		{
			//直接創建菜單
			menu.add("TICKTACK OFF").setIcon(R.drawable.icon).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
			menu.add("TICKTACK ON").setIcon(R.drawable.icon).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
		}
}

Fragment02.java

package hyz.com.actionbar;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class Fragment02 extends Fragment implements OnClickListener
{
//    private String mText;
//    public Fragment02(String text) 
//    {
//        mText = text;
//    }
//    public String getText()
//    {
//        return mText;
//    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {        	
      View fragView = inflater.inflate(R.layout.fragment02, container, false);
      Button button = (Button) fragView.findViewById(R.id.fragment02);
      button.setOnClickListener(this);          
      return fragView;
    }
	@Override
	public void onClick(View v) 
	{	
		Toast.makeText(getActivity(), "don't click fragment02", Toast.LENGTH_SHORT).show();			
	}
}

action_bar_tabs.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:orientation="vertical">
    <FrameLayout 
    	android:id="@+id/fragment_content"
   	 	android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1" />
</LinearLayout>


fragment01.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
	<TextView
	    xmlns:android="http://schemas.android.com/apk/res/android"
	    android:id="@+id/text"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="fragment01"/>
	<Button 
	    android:id="@+id/fragment01"	    
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="click me"
	    android:layout_toRightOf="@id/text"/>
</RelativeLayout>


fragment02.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
	<TextView
	    xmlns:android="http://schemas.android.com/apk/res/android"
	    android:id="@+id/text"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content" 
	    android:text="fragment02:"/>
	<Button 
	    android:id="@+id/fragment02"	    
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="click me"
	    android:layout_toRightOf="@id/text"/>
</RelativeLayout>


res/menu/menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/add"
        android:showAsAction="ifRoom|withText"
        android:title="ADD"
        android:icon="@drawable/icon"/>
</menu>

 

補充:

如果要在ActionBar上顯示一個EditText,可如下:

private View mCustomView;

bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM);

mCustomView = getLayoutInflater().inflate(R.layout.lay, null);      
bar.setCustomView(mCustomView, new ActionBar.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

<?xml version="1.0" encoding="utf-8"?>
<EditText
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:text="dfghjkl"
    android:layout_width="450dip"
 android:layout_height="wrap_content"
    />

 



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章