===根本原因===當它被包含在一個片段onItemSelected不觸發
onItemSelected工作正常,爲下面的問題我所描述的,原因是我剛纔分支一些代碼來ArrayAdapter.notifyDataSetInvalidated()。對我的教訓是:
*當AdapterView上發生「無響應」時,請檢查適配器。
感謝給我任何建議的朋友。
===================
我想有一個片段的微調,但onItemSelected不能正常工作,請你告訴我理由,非常感謝。
這裏是活動佈局的xml:
<LinearLayout>
<!-- onItemSelected works fine when the spinnerConnector defined in activity layout -->
<Spinner
android:id="@+id/spinnerConnectors"
android:spinnerMode="dropdown" />
<!-- move spinnerConnectors into this fragment will cause the problem - onItemSelected not work
<fragment
android:id="@+id/fragmentConnectors"
android:name="com.sharework.transproxy.android.ConnectorsFragment"
tools:layout="@layout/list_fragment1" />
-->
</LinearLayout>
ConnectorsFragment
public class ConnectorsFragment extends android.app.Fragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// create adapter ...
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.connectors_fragment, null);
Spinner spinnerConnectors = (Spinner) view
.findViewById(R.id.spinnerConnectors);
spinnerConnectors.setAdapter(adapter);
return view;
}
@Override
public void onActivityCreated(Bundle bundle) {
super.onActivityCreated(bundle);
Spinner spinnerConnectors = (Spinner) getView().findViewById(
R.id.spinnerConnectors);
spinnerConnectors
.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// **** code to handle onItemSelected but not trigged
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
} ConnectorsFragment
的佈局
<LinearLayout>
<Spinner
android:id="@+id/spinnerConnectors"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:spinnerMode="dropdown" />
</LinearLayout>
活動
public class FactoryMonitorActivity TransProxyActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_factory_monitor);
// invoke ConnectorsFragment.start to query for connectors and fill into the adapter
}
}
承擔責任:水災任何人的幫助,謝謝!
我假設你從活動中刪除微調,並將其保留在片段中?你的結果是什麼?你真的看到微調,你可以選擇一個項目,但方法沒有觸發? – fasteque
我可以看到它,但是當我選擇不同項目時沒有任何反應。 –
@ Peter.Peng你說你有活動佈局的微調。你有'spinner_fragment.xml'中的微調。 – Raghunandan