Android 添加适配器后微调器保持为空
Android Spinner stays empty after adding adapter
) 我又需要你的帮助了。
我尝试了 2 个小时来解决这个问题,我在谷歌上搜索了很多并寻找类似的问题。我找到了很多,但没有任何效果。
这是我的问题:
我从 "Plants" 的 ArrayList 中填充一个微调器。
然后我为这个微调器设置一个适配器,最后设置一个 OnItemSelectedListener。
当我打开 Activity 时,Spinner 是空的。但他一定做了什么,因为当我返回主屏幕并再次打开应用程序(通过图标,而不是任务管理器)时,微调器已正确填充。
我不能只重新加载 activity 因为然后我陷入了无限循环:(
我认为 Spinner 在使用 OnStart 方法后会重新加载。但是我现在不知道怎么继续:(
这是我的代码:
*public class entscheidungsbaum 扩展 Activity 实现 OnItemSelectedListener {
private Spinner spAlter= null;
private Spinner spArt= null;
private Spinner spBlaetterrand= null;
private Spinner spBlaetterForm= null;
private Spinner spBlueten= null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.entscheidungsbaum);
final Activity activity = this;
activity.setTitle("Pflanze eintragen");
spAlter = (Spinner)this.findViewById(R.id.spAlter);
spArt = (Spinner)this.findViewById(R.id.spArt);
spBlaetterrand = (Spinner)this.findViewById(R.id.spBlaetterrand);
spBlaetterForm = (Spinner)this.findViewById(R.id.spBlaetterform);
spBlueten = (Spinner)this.findViewById(R.id.spBlueten);
FillSpinner();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
public void onButtonClick (View Click) {
switch(Click.getId()){
default: return;
case R.id.weiter:
startActivity(new Intent(this, formular.class));
return;
}
}
public void FillSpinner(){
Bundle extras = getIntent().getBundleExtra("plantbundle");
ArrayList<Plant> plantlist = extras.getParcelableArrayList("plant");
ArrayAdapter<Plant> spinnerArrayAdapter = new ArrayAdapter<Plant>(this, android.R.layout.simple_spinner_item,plantlist);
spAlter.setAdapter(spinnerArrayAdapter);
spAlter.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
Plant plant = (Plant)spAlter.getSelectedItem();
// Anzeigen
toast_selec_plant(plant);
}
private void toast_selec_plant(Plant plant) {
Toast.makeText(this, "Pflanze ausgewählt:" + plant.toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
}*
伊迪丝发现:
我从意图中得到的植物列表是空的,这就是为什么微调器也保持空的原因。
但是当我退出应用程序并再次进入时,它会起作用。奇怪的。如果您有任何提示,欢迎 ;)
好的伙计们。我知道了。
我现在可以结束这段独白了。
只是告诉感兴趣的人我的失败是什么:
在 Class 中,将植物的 Arraylist 提供给 entscheidungsbaum.class 每个意图是失败的。我在 class 的顶部定义了一个 Arraylist 变量,并用一个额外的方法填充它。
但是如果不刷新 Activity,Arraylist 将保持为空直到刷新。
所以我只是删除了变量定义并重写了返回 arraylist 的方法。之后,我根据 Intent 直接将其发送到我的 entscheidungsbaum.class。它有效;)
谢谢大家,你可以删除或冻结这个问题:)
) 我又需要你的帮助了。 我尝试了 2 个小时来解决这个问题,我在谷歌上搜索了很多并寻找类似的问题。我找到了很多,但没有任何效果。
这是我的问题: 我从 "Plants" 的 ArrayList 中填充一个微调器。 然后我为这个微调器设置一个适配器,最后设置一个 OnItemSelectedListener。 当我打开 Activity 时,Spinner 是空的。但他一定做了什么,因为当我返回主屏幕并再次打开应用程序(通过图标,而不是任务管理器)时,微调器已正确填充。 我不能只重新加载 activity 因为然后我陷入了无限循环:( 我认为 Spinner 在使用 OnStart 方法后会重新加载。但是我现在不知道怎么继续:(
这是我的代码:
*public class entscheidungsbaum 扩展 Activity 实现 OnItemSelectedListener {
private Spinner spAlter= null;
private Spinner spArt= null;
private Spinner spBlaetterrand= null;
private Spinner spBlaetterForm= null;
private Spinner spBlueten= null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.entscheidungsbaum);
final Activity activity = this;
activity.setTitle("Pflanze eintragen");
spAlter = (Spinner)this.findViewById(R.id.spAlter);
spArt = (Spinner)this.findViewById(R.id.spArt);
spBlaetterrand = (Spinner)this.findViewById(R.id.spBlaetterrand);
spBlaetterForm = (Spinner)this.findViewById(R.id.spBlaetterform);
spBlueten = (Spinner)this.findViewById(R.id.spBlueten);
FillSpinner();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
public void onButtonClick (View Click) {
switch(Click.getId()){
default: return;
case R.id.weiter:
startActivity(new Intent(this, formular.class));
return;
}
}
public void FillSpinner(){
Bundle extras = getIntent().getBundleExtra("plantbundle");
ArrayList<Plant> plantlist = extras.getParcelableArrayList("plant");
ArrayAdapter<Plant> spinnerArrayAdapter = new ArrayAdapter<Plant>(this, android.R.layout.simple_spinner_item,plantlist);
spAlter.setAdapter(spinnerArrayAdapter);
spAlter.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
Plant plant = (Plant)spAlter.getSelectedItem();
// Anzeigen
toast_selec_plant(plant);
}
private void toast_selec_plant(Plant plant) {
Toast.makeText(this, "Pflanze ausgewählt:" + plant.toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
}*
伊迪丝发现: 我从意图中得到的植物列表是空的,这就是为什么微调器也保持空的原因。 但是当我退出应用程序并再次进入时,它会起作用。奇怪的。如果您有任何提示,欢迎 ;)
好的伙计们。我知道了。 我现在可以结束这段独白了。 只是告诉感兴趣的人我的失败是什么:
在 Class 中,将植物的 Arraylist 提供给 entscheidungsbaum.class 每个意图是失败的。我在 class 的顶部定义了一个 Arraylist 变量,并用一个额外的方法填充它。 但是如果不刷新 Activity,Arraylist 将保持为空直到刷新。 所以我只是删除了变量定义并重写了返回 arraylist 的方法。之后,我根据 Intent 直接将其发送到我的 entscheidungsbaum.class。它有效;)
谢谢大家,你可以删除或冻结这个问题:)