2014-10-29 106 views
1

我有一個主要活動,它包含微調+ 3個片段(選項卡)。我想從片段訪問微調器值。所以我寫了這個代碼到onActivityCreated我的片段中:Android:從片段訪問活動微調器

final Spinner spinner = (Spinner) getView().findViewById(R.id.spinnerOblasti); 
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
     /*TextView[] vystrahy = new TextView[1]; 
     vystrahy[0] = (TextView) getView().findViewById(R.id.txtVystrahy); 
     (new htmlParser(vystrahy, 0)).execute(new Integer[]{spinner.getSelectedItemPosition()});*/ 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
}); 

但是當我運行我的應用程序微調引發NullPointerException異常。任何想法如何從片段訪問它?

這裏是我的onCreateView我相信這是造成問題,但我不知道如何解決它:在前進

回答

0

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_tab1, container, false); 
    return rootView; 
} 

感謝這樣不行的話,你是什麼意思了微調值?如果你想訪問微調對象,你必須設置一個接口,這個接口將被你的活動實現,然後在onActivityCreated中你可以調用該接口的方法來做一些事情。例如:

public class MyClass implements MyInterface { 
    public interface MyInterface { 
     void doSomethingWithSpinner(); 
    } 

    public void doSomethingWithSpinner() { 
     mySpinner.setVisibility(View.VISIBLE); 
    } 
} 

而且你onActivityCreated:

if(getActivity() instanceof MyInterface) { 
    ((MyInterface)getActivity()).doSomethingWithSpinner(); 
} 
+0

說明:我有它由8個項目的好手。基於選擇的項目,我從站點檢索HTMl的特定部分。例如,第一個項目檢索第一個div等等。所以我只需要監聽器來監聽所選擇的微調項目的變化,然後調用我的方法並解析它所選項目的位置 – horin 2014-10-29 15:16:15

+0

然後,您不需要從片段中獲取微調器值只能在片段內創建一個方法,並在微調器值更改時從活動中調用它 – TheRedFox 2014-10-29 15:21:05

+0

謝謝,它正在工作 – horin 2014-10-29 15:26:46