在一项活动中,我有两个文本视图。在上下文菜单中,我有一个选项可以更改其中一个文本视图的文本大小。我试过这样的事情......
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case R.id.menutextSize:
final CharSequence[] items = {"Normal","Large","Larger"};
AlertDialog.Builder builder = new
AlertDialog.Builder(this);
builder.setTitle("Select TextSize");
builder.setSingleChoiceItems(items, -1,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item],
Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
int textSize = (int)mBodyText.getTextSize();
if (items[whichButton] == "Normal")
{
mTextv.setTextSize(12);
}
if (items[whichButton] == "Large")
{
mTextv.setTextSize(14);
}
if (items[whichButton] == "Larger")
{
mTextv.setTextSize(16);
}
}
});
builder.setNegativeButton("cancel", null);
builder.show();
return true;
}
当我在放射线按钮中显示出“强制关闭”的消息时。我怎么解决这个问题?
谢谢..
答案 0 :(得分:1)
您的应用崩溃是因为它试图访问items
数组中具有负索引的元素。这是因为以下几行:
if (items[whichButton] == "...")
如果仔细查看DialogInterface.OnClickListener文档,您会发现其onClick()
方法接受BUTTON_POSITIVE
,BUTTON_NEUTRAL
和BUTTON_NEGATIVE
这样的常量否定且未连接到列表项。