java - Android Spinner 对话框未填充?

标签 java android spinner

我有一个由两个 fragment 组成的 Activity 。左边是侧边栏,右边是 MapView(见下面的屏幕截图)。

左侧有一个微调器,它将填充 map 上的对象。现在,我用一些值对其进行了硬编码,直到我弄清楚这个问题。选择微调器后,会出现一个对话框,但它是空的。知道发生了什么吗?

这是我的左侧 fragment 的代码(不是很复杂):

package android.splitdisplay;


import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;

public class SideFragment extends Fragment {
    String[] tracks = { "ObjectOne", "ObjectTwo",
            "ObjectThree"

    };


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.getActivity().setContentView(R.layout.sidefragment);

        final Spinner s = (Spinner) this.getActivity().findViewById(
                R.id.track_spinner);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this
                .getActivity().getBaseContext(),
                android.R.layout.simple_spinner_item, tracks);
        s.setAdapter(adapter);

        s.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                int item = s.getSelectedItemPosition();
                Toast.makeText(SideFragment.this.getActivity().getBaseContext(),
                        "clicked "+item, Toast.LENGTH_SHORT).show();
            }

                @Override
            public void onNothingSelected(AdapterView<?> arg0) {
            }
        });

    }

    public void onListItemClick(ListView parent, View v, int position, long id) {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.sidefragment, container, true);
    }
}

这是 SideFragment 的 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" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Tracks"
        android:textColor="#adff2f"
        android:textSize="30sp" />

    <Spinner
        android:id="@+id/track_spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
        android:prompt="@string/track_prompt"
        android:spinnerMode="dialog" >
    </Spinner>

</LinearLayout>

这是我单击微调器时看到的内容:

What I am seeing

以下是 zip 中的所有源代码:

http://db.tt/KMGXhZWc

最佳答案

问题不在于 Spinner,问题在于您正在给两个 Spinner 充气。一个在 onCreateView 方法中,另一个在这一行中:

this.getActivity().setContentView(R.layout.sidefragment);

并且只有一个带有提供程序的微调器...所以我建议您在 onCreationView 上设置所有 GUI 变量,如下所示:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.sidefragment, container, true);
    final Spinner s = (Spinner) v.findViewById(
            R.id.track_spinner);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this
            .getActivity().getBaseContext(),
            android.R.layout.simple_spinner_item, tracks);
    s.setAdapter(adapter);

    s.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            int item = s.getSelectedItemPosition();
            Toast.makeText(SideFragment.this.getActivity().getBaseContext(),
                    "clicked "+item, Toast.LENGTH_SHORT).show();
        }

            @Override
        public void onNothingSelected(AdapterView<?> arg0) {
        }
    });
    return v;
}

并删除重写的方法onCreate。

关于java - Android Spinner 对话框未填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8231086/

相关文章:

java - HTTP 状态代码 410 和其他 Angular 5 代码之间的行为差​​异

java - 获取特定 JTable 单元格中的前景(字体)

android - 在 EditText 中填充提示文本

javascript - 延迟 Angular 旋转器不闪烁

java - Hibernate中的单向一对多映射产生冗余更新

android - 操作栏中的主页按钮在 Lollipop 中不起作用

android - 无法在 SD 卡上创建文件夹 - mkdir 总是返回 false

android - 动态创建微调器并从 SQLite 设置其值

android:微调器的每个项目都有不同的颜色

java - 一个非常简单的塞子