항목 옵션을 사용하여 xml 파일의 항목으로 회 전자를 채 웁니다. 주 활동 클래스의 회 전자를 "s1"로 정의했습니다. 디버그 모드에서 나는 s1이 null이라는 것을 발견했다. 이것이 setOnItemSelectedListener가 회 전자에 대해 작동하지 않는 이유입니다. 항목을 선택하면 토스트 메시지가 표시되지 않습니다. mainactivity.java, activity_main.xml 및 strings.xml 파일을 제공하고 있습니다.주 활동에 정의 된 회 전자가 null입니다.
MainActivity.java
public class MainActivity extends ActionBarActivity{
String[] presidents;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
presidents = getResources().getStringArray(R.array.presidents);
Spinner s1 = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.presidents, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
if(s1 != null){
s1.setAdapter(adapter);
s1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0,
View arg1, int arg2, long arg3)
{
int index = arg0.getSelectedItemPosition();
Toast.makeText(getBaseContext(), presidents[index], Toast.LENGTH_SHORT).show();
}
public void onNothingSelected(AdapterView<?> arg0){
}
});
}
}
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
return rootView;
}
}
activity_main.xml
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Spinner
android:id="@+id/spinner1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop= "true"
android:entries="@array/presidents" />
strings.xml의
<resources>
<string-array name = "presidents">
<item>eisenhower</item>
<item>kennedy</item>
</string-array>
</resources>
지수는 유 된 setContentView를 사용하여 r에 – ashutiwari4
(R.layout.activity_main) ARG2해야한다; 하지만 게시 XML fragment_main.xml –
위의 코드에서 placeholderFragment 클래스의 fragment_main.xml을 사용하고 있습니다 – user3715224