知識社群登入
位置: 艾鍗學院 Blog > 專業論壇 > 討論
TabActivity is deprecated (過時?)
1樓
大家好, 我剛學了2天ANDRIOD的APPS, 在運用TabActivity時, eclipse出了"警告提示", apps 正常運作,
但TabActivity 被打了橫線!!
 
內容如下:
 
The type TabActivity is deprecated MainActivity.java /MyStock2/src/example/mystock2 line 3 Java Problem
package example.mystock2;
import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.TabHost;
import example.mystock2.tabActivity.home;
import example.mystock2.tabActivity.record;
import example.mystock2.tabActivity.setting;
import example.mystock2.tabActivity.stock;
import example.mystock2.util.DBHelper;

public class MainActivity extendsTabActivity {
  /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main); // R.layout.main改成了R.layout.activity_main
     // 先取得Resources的參照
     Resources res = getResources();
     // 因為是TabActivity可以取得TabHost物件的實例
  TabHost tabHost = getTabHost();
     TabHost.TabSpec spec;
     Intent intent;
    
  intent = new Intent().setClass(this, market.class);
     spec = tabHost.newTabSpec("market")
         .setIndicator("market", res.getDrawable(R.drawable.tab_icon1))
         .setContent(intent);
     tabHost.addTab(spec);
    
  intent = new Intent().setClass(this, stock.class);   
     spec = tabHost.newTabSpec("stock")
         .setIndicator("stock", res.getDrawable(R.drawable.tab_icon2))
         .setContent(intent);
     tabHost.addTab(spec);
    
  intent = new Intent().setClass(this, record.class);
     spec = tabHost.newTabSpec("record")
         .setIndicator("record", res.getDrawable(R.drawable.tab_icon3))
         .setContent(intent);
     tabHost.addTab(spec);
  intent = new Intent().setClass(this, setting.class);
    
     spec = tabHost.newTabSpec("setting")
          .setIndicator("setting", res.getDrawable(R.drawable.tab_icon4))
          .setContent(intent);
      tabHost.addTab(spec);
     
    tabHost.setCurrentTab(0);
   
    //取得一個資料庫輔助類別的實例
    DBHelper source = new DBHelper(this);
    //使用這個輔助類別取得可讀寫的資料庫
    SQLiteDatabase db = source.getWritableDatabase();
   }
 }
2樓
會出現橫線是因為該類別或函式己經不建議被使用了,google會建議你使用新版的函式或類別去取代.
當然你如果要繼續使用舊的也是可以編譯過,也可以跑, 但通常使用新的方法會有比較好的效能或
是有較好的相容性. 因為android改版的速度蠻快的,所以常會有新的版出來後,有些較新的較好
的函式或是框架去取代舊的用法,因此必須要時常注意新版的android的release note,通常會有api函式
的比較表可以供你參考這次改版有加了什麼新的api.

TabActivity己經不建議被使用,Google建議您使用 Fragment 去代替TabActivity的實作
3樓
非常感謝JAREY的詳細講解, 您的幾怡話對我們新手來說真是太好了, 太有幫助了,
希望將來有一天我也可以幫到新手, 解答他們的問題, 回饋社會!
 
請問去那查看最新API的資料呢? 有講解怎麼用嗎?
 
FRAGMENT我有資料, 想看看其他的.