我有一个Spinner
,并将所选项目放在邮件正文中。
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_modulo);
Spinner spinnerTaglia = (Spinner) findViewById(R.id.spinnerTaglia);
// Create an ArrayAdapter using the string array and a default spinner layout ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.Taglie, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerTaglia.setPrompt("Seleziona la taglia!");
// Apply the adapter to the spinner
spinnerTaglia.setAdapter(new NothingSelectedSpinnerAdapter(
adapter,
R.layout.contact_spinner_row_nothing_selected,
// R.layout.contact_spinner_nothing_selected_dropdown, // Optional
this));
final String taglia = spinnerTaglia.getSelectedItem().toString();
Button btnCompilaOrdine = (Button) findViewById(R.id.btnCompilaOrdine);
btnCompilaOrdine.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0) {
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"MAIL@gmail.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "MAIL OBJECT");
i.putExtra(Intent.EXTRA_TEXT , "Taglia: "+taglia);
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(Modulo.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
}
});
}
应用程序在模拟器中正确启动,调试器没有显示任何内容(我正在使用Android Studio)但是当我点击按钮时,我会参与此活动,应用程序崩溃,Android Studio的调试器显示{{{ 1}}在行中:
final String taglia = spinnerTaglia.getSelectedItem()。toString();
我该如何解决这个问题?
答案 0 :(得分:3)
getSelectedItem()
使您的应用程序崩溃,则 toString()
将返回null。摆脱
final String taglia = spinnerTaglia.getSelectedItem().toString();
并在你的onClick上执行:
if (spinnerTaglia.getSelectedItem() == null) {
return;
}
String taglia = spinnerTaglia.getSelectedItem().toString();
// the other code
答案 1 :(得分:1)
移动线
final String taglia = spinnerTaglia.getSelectedItem().toString();
到OnClickListener
目前,您在尝试选择任何内容之前尝试阅读所选项目。您还应确保getSelectedItem()
不返回null,因为除非您启用/禁用btnCompilaOrdine
按钮(选择项目时),否则用户可以按下按钮而不选择项目旋转器。
答案 2 :(得分:0)
也许你应该OnItemSelectedListener一个按钮的inseatead。 Android Spinner
答案 3 :(得分:0)
似乎项目返回时WorkingSpreadOrderCollevtionView = new CollectionViewSource { Source = SpreadOrderCollection }.View;
值为NULL
。
Invoking the method from a null object
是NullPointerException
因此,Javac编译器不会强制您使用try-catch块来适当地处理它。
希望这可以帮助您解决问题。
如需进一步参考,请访问以下链接: -
RuntimeException
答案 4 :(得分:0)
您正在实际渲染微调器之前获取所选项目。这取决于设备到设备的呈现速度有多快。
而不是在getSelectionItem()
方法的onCreate()
中获取所选项目,请尝试在onClickListener()
的{{1}}中执行此操作。
Button
答案 5 :(得分:0)
mSpinner.setSelected(true);
如果您使用spinner
实施此功能,则不会提供 null 。