【发布时间】: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