2012-04-17 47 views
0

我對Android和Java的相當新的事情,我有一個上下文問題 - 我有一個微調內TabWidget在另一個TabWidget內,並在代碼端我有我的主類這是一個TabActivity,其中我將特定選項卡的意圖設置爲另一個TabActivity,其中我將選項卡的意圖設置爲一個活動,我將內容視圖設置爲具有我的微調器的佈局(希望這有意義)。任何時候我點擊微調器並嘗試啓動微調器的對話框,它都會給我一個錯誤的令牌錯誤。從我讀過的,這是因爲我的微調器有錯誤的上下文,但由於我沒有積極設置我的上下文(我用XML創建了微調器),而且我似乎無法找到設置方法或暴露屬性來設置微調的背景......你明白了,儘管讀了其他人的類似問題,但我迷失了這一點。這裏是我的代碼:Android微調TabWidget內不好令牌

主營:

public class Star_Android_Activity extends TabActivity 
{ 
    public static void main(String[] args) { 
    } 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     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, Pick_Activity.class); 

     // Initialize a TabSpec for each tab and add it to the TabHost 
     spec = tabHost.newTabSpec("pick").setIndicator(LinearLayout.inflate(this,R.layout.tab_header_pick, null)) 
      .setContent(intent); 
     tabHost.addTab(spec); 

     tabHost.setCurrentTab(0); 
    } 
} 

子標籤:

public class Pick_Activity extends TabActivity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

      setContentView(R.layout.pick); 

      TabHost tabHost = getTabHost(); // The activity TabHost 
      TabHost.TabSpec spec; // Reusable TabSpec for each tab 
      Intent intent; // Reusable Intent for each tab 

      intent = new Intent().setClass(this, Pending_Activity.class); 
      spec = tabHost.newTabSpec("pending").setIndicator(LinearLayout.inflate(this,R.layout.tab_header_pending, null)) 
          .setContent(intent); 
      tabHost.addTab(spec); 

      tabHost.setCurrentTab(0); 
    } 
} 

子活動:

public class Pending_Activity extends Activity 
{ 

    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.pending); 

     addSpinnerValues(); 
    } 

    public void addSpinnerValues() 
    { 
     Spinner spn = (Spinner)findViewById(R.id.spnPick); 
     List<String> list = new ArrayList<String>(); 
     list.add("list 1"); 
     list.add("list 2"); 
     list.add("list 3"); 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list); 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spn.setAdapter(dataAdapter);  
    } 

} 

爲主要的XML文件,並選擇基本上都是拷貝hello tabwidget教程和我的pending.xml只是一個包含幾個按鈕和我的微調框的FrameLayout。我可以發佈代碼,如果它有幫助,但我有問題發佈了代碼(字符限制也許)。

任何有關如何正確設置我的上下文(以及一個小的解釋,如果它不是一個麻煩)的任何幫助將不勝感激!

回答

3

我花了一段時間,但我發現了另一個發帖稱有解決方案的一部分,至少對於我而言幫助很大......我只是改變了我:

setContentView(R.layout.pending); 

到:

View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.pending, null); 
    this.setContentView(viewToLoad); 

因此,我的pending.xml頁面的上下文被設置爲父類的上下文......雖然我會承認,但我不明白爲什麼它不一定是父類的父類,並且爲什麼只有父母本身是一個孩子是可以接受的...希望有一段時間我會開始理解它。

0

在webview或本地需要顯示的父級內彈出。因此,使用它的父項來擴充活動

FrameLayout contentFrameLayout =(FrameLayout)findViewById(R.id.content_frame); LayoutInflater.from(this.getParent())。inflate(R.layout.activity_main,contentFrameLayout);

此處Iam將activity_main.xml替換爲基本活動框架佈局