2014-10-29 46 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