【问题标题】:Trouble adding a Spinner in Android Studio在 Android Studio 中添加 Spinner 时遇到问题
【发布时间】:2015-09-12 19:50:22
【问题描述】:

保持历史。跳至编辑。

在我正在开发的 Android 应用中添加微调器时遇到问题。我还没有开发到应用程序中的代码,但只是为了做一些测试,我让它发送一条 toast 消息让我知道它有效。根据此页面:http://developer.android.com/guide/topics/ui/controls/spinner.html 您可以使用 User 通过在另一个类中调用 OnItemSelected 来创建事件。

public class SpinnerActivity extends EditJobActivity implements AdapterView.OnItemSelectedListener {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view,
                               int pos, long id) {
        // An item was selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos)
        Toast.makeText(SpinnerActivity.this, "It worked", Toast.LENGTH_SHORT).show();
    }
    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }
}

这是它自己的类。我用这个来称呼它:

    //Prepare the first (Job Discovery) spinner
    Spinner mJobDiscovery = (Spinner) findViewById(R.id.SpinJobDiscovered);
    // Create an ArrayAdapter using the string array and a default spinner layout
    JobDiscoveryAdapter = ArrayAdapter.createFromResource(this,
            R.array.spin_JobDiscoveryHome, android.R.layout.simple_spinner_item);
    // Specify the layout to use when the list of choices appears
    JobDiscoveryAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    // Apply the adapter to the spinner
    mJobDiscovery.setAdapter(JobDiscoveryAdapter);
    mJobDiscovery.setOnItemSelectedListener(this);

但是,我收到此错误: AdapterView中的SetOnItemSelectedListener(android...)不能应用到(com...Activity)

它要求我将其转换为 (AdapterView.OnItemSelectedListener),但当我这样做时,我会收到错误,因为我无法将活动转换为 OnItemSelectedListener。我在这里想念什么?我对 Android 编程有点陌生,所以如果这是一个简单的答案,我很抱歉......

编辑:

在与 Bhush_techidiot 交谈后,他向我发送了一些有帮助的资源,但是我无法完成我的实施。现在我的 SpinnerActivity 暂时看起来像这样:

public class SpinnerActivity extends EditJobActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_edit_job);

        /*for fill your Spinner*/
    List<String> SpinnerArray = new ArrayList<String>();
    SpinnerArray.add("Item 1");
    SpinnerArray.add("Item 2");
    SpinnerArray.add("Item 3");
    SpinnerArray.add("Item 4");
    SpinnerArray.add("Item 5");

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, SpinnerArray);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    Spinner spinner = (Spinner) findViewById(R.id.SpinJobDiscovered);
    spinner.setAdapter(adapter);

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                                   int arg2, long arg3) {
            // TODO Auto-generated method stub
            Object item = arg0.getItemAtPosition(arg2);
            if (item != null) {
                Toast.makeText(EditJobActivity.this, item.toString(),
                        Toast.LENGTH_SHORT).show();
            }
            Toast.makeText(EditJobActivity.this, "Selected",
                    Toast.LENGTH_SHORT).show();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
}
}

但我不知道如何从我的 EditJobActivity 调用 SpinnerActivity,所以我收到错误消息:EditJobActivity 上的“...不是封闭类”。我应该为这个微调器做一个新的布局吗?

【问题讨论】:

  • 查看这些链接 1.stackoverflow.com/questions/4923310/… 2.stackoverflow.com/questions/16581536/… 了解有关实施微调器的一些想法。
  • 谢谢。我正在看着它们,但仍然遇到了一些麻烦,但我注意到也许我正在尝试做的事情是没有必要的。我希望根据我选择的选项弹出其他编辑文本和微调器字段。当我应该专注于不同的方法时,我是否在浪费时间试图让它发挥作用?
  • 尝试做一些没有做的事情并不是浪费时间。继续探索,但请确保您在此期间不要搁置您的工作。
  • 是的,我想我越来越焦虑了。我喜欢把事情做好,我喜欢学习,但有时我发现很难在两者之间取得平衡。我正在查看您发送给我的第二个资源,但在执行 AT_AB 的答案时遇到了麻烦。不幸的是,它说我需要 50 个代表来评论它,所以我不能问他。我将更改我的问题以包括我尝试过的内容,以便您可以让我知道我缺少什么?
  • 我想我还在路上!所以我认为我做错的是,我正确地使用了该方法,(尽管以一种过于复杂的方式),但我认为它是错误的。 Extends 表示类本身继承了 Superclass 的所有方法,super 表示“该子类正在扩展的类”。当我实现我的 OnItemSelectedListener 并覆盖 OnItemSelected 类时,OnItemSelectedListener 除了覆盖之外保持不变,但它充当覆盖而不是扩展。所以 SpinnerActivity = EditJobActivity 在某种程度上。抱歉,长篇大论……

标签: java android-studio listener android-arrayadapter android-spinner


【解决方案1】:

检查以下链接。确保您的解决方案尽可能简单,一旦您开始使用简单的解决方案,也毫不犹豫地尝试复杂的事情 :) 了解扩展和实现类,您就可以开始了!

  1. Android Spinner - onItemSelected / setOnItemSelectedListener not triggering
  2. setOnItemSelectedListener of Spinner does not call
  3. How to get the value of a selected item in a spinner?

一切顺利!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2016-06-28
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多