2014年9月17日 星期三

Use Fragment to generate Tab

MainActivity.java:
package com.main;

import com.example.tabfragment.R;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.app.ActionBar.Tab;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.util.Log;

public class MainActivity extends FragmentActivity {
    
 private MyPagerAdapter mMyPagerAdapter;
 private ViewPager mViewPager;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mMyPagerAdapter = new MyPagerAdapter(this.getSupportFragmentManager());
        
        final ActionBar actionBar = this.getActionBar();
        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        
        mViewPager = (ViewPager) this.findViewById(R.id.pager);
        mViewPager.setAdapter(mMyPagerAdapter);
        mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
   @Override
   public void onPageSelected(int position) {
    super.onPageSelected(position);
    actionBar.setSelectedNavigationItem(position);
   }
        }); // mViewPager.setOnPageChangeListener
        
        // generate tab items
        actionBar.addTab(
          actionBar
           .newTab()
           .setText("Frag1")
           .setTabListener(OnTabListener));
        actionBar.addTab(
          actionBar
           .newTab()
           .setText("Frag2")
           .setTabListener(OnTabListener));
        actionBar.addTab(
          actionBar
           .newTab()
           .setText("Frag3")
           .setTabListener(OnTabListener));
    }
    
    private class MyPagerAdapter extends FragmentPagerAdapter {

  public MyPagerAdapter(FragmentManager fm) {
   super(fm);
  }

  @Override
  public Fragment getItem(int position) {
   Log.d("Yeh", "FragmentPagerAdapter >> getItem item position="+position);
   
   Fragment fragment = new TabFragment();
   
   Bundle args = new Bundle();
   fragment.setArguments(args);
   args.putInt("position", position);
   
   return fragment;
  }

  @Override
  public int getCount() {
   // Number of items in the tab.
   return 3;
  }
     
    }
    
    private ActionBar.TabListener OnTabListener = new ActionBar.TabListener() {
  
  @Override
  public void onTabUnselected(Tab tab, FragmentTransaction ft) {
   // TODO Auto-generated method stub
   
  }
  
  @Override
  public void onTabSelected(Tab tab, FragmentTransaction ft) {
   mViewPager.setCurrentItem(tab.getPosition());
  }
  
  @Override
  public void onTabReselected(Tab tab, FragmentTransaction ft) {
   // TODO Auto-generated method stub
   
  }
 };
}
TabFragment.java
package com.main;

import com.example.tabfragment.R;

import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class TabFragment extends Fragment {
 
 
 int mPosition;
 
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
   Bundle savedInstanceState) {
  View rootView = inflater.inflate(R.layout.frag_view, container, false);
  TextView tv = (TextView) rootView.findViewById(R.id.textView);
  
  
  mPosition = this.getArguments().getInt("position", -1);
  Log.d("Yeh","Frag"+mPosition+" >> onCreateView");
  tv.setText("This is Fragment "+mPosition);
  
  
  return rootView;
 }

 @Override
 public void onDestroyView() {
  super.onDestroyView();
  Log.d("Yeh","Frag"+mPosition+" >> onDestroyView");
 }

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  Log.d("Yeh","Frag"+mPosition+" >> onCreate");
 }

 @Override
 public void onDestroy() {
  super.onDestroy();
  Log.d("Yeh","Frag"+mPosition+" >> onDestroy");
 }

 
}

activity_main.xml
<android.support.v4.view.ViewPager 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
    
frag_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".DeviceFragment" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Tab1" />

</LinearLayout>
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tabfragment"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity android:name="com.main.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

2014年9月1日 星期一

ADB Useful Command

# In the adb shell
dmesg -查看 Android Linux Kernel 運作訊息
ls -顯示檔案目錄
cd -進入目錄
rm -刪除檔案
mv -移動檔案
mkdir -產生目錄
rmdir -刪除目錄


# In the command line terminal
adb logcat -監控模擬器運作紀錄,以Ctrl + c 離開監控模式
adb bugreport -產生 adb 除錯報告
adb get-state - 獲得 adb 伺服器運作狀態
adb start-server -啟動 adb 伺服器
adb kill-server -關掉 adb 伺服器
adb forward tcp:6100 tcp:7100 -更改模擬器網路 TCP 通訊埠
adb shell ps -x -顯示所有正在執行的Process
adb version -顯示 adb 版本
adb help -顯示 adb 指令參數