【问题标题】:Android: setText() doesn't work on device, but on emulator with keyboard inputAndroid:setText() 在设备上不起作用,但在带有键盘输入的模拟器上
【发布时间】:2015-03-17 07:32:09
【问题描述】:

我正在 android studio 上制作一个简单的应用程序。 MainActivity 有一个 ListView,其中包含来自字符串数组的项目, 如果我单击一个项目,则会显示一个 AlterDialog。 该对话框有一个 EdixText。我在上面写文字,如果我点击正面按钮,我点击的项目的 TextView 就会变成我刚才写的。 对不起我的英语不好......无论如何,这是我的 MainActivity 源代码。

package com.softdept.sangkyu.swex01;

import ...

public class SWEX01 extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_swex01);
    ListAdapter myAdapter = new MyAdapter(this, getResources().getStringArray(R.array.tvshow));
    ListView tvShowList = (ListView)findViewById(R.id.listView);
    tvShowList.setAdapter(myAdapter);
    tvShowList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(final AdapterView<?> parent, View view, int position, long id) {
            final TextView textView = (TextView)view.findViewById(R.id.textView);
            String showName = textView.getText().toString();
            Toast.makeText(parent.getContext(), showName, Toast.LENGTH_SHORT).show();
            AlertDialog.Builder dialog = new AlertDialog.Builder(parent.getContext());
            dialog.setTitle("Modify TV show");
            dialog.setMessage(showName);
            final EditText editText = new EditText(getApplicationContext());
            dialog.setView(editText);
            dialog.setNegativeButton("Cancel", null);
            dialog.setPositiveButton("Modify", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String editShowName = editText.getText().toString();
                    textView.setText(editShowName);
                    Toast.makeText(parent.getContext(), "Modified!", Toast.LENGTH_SHORT).show();
                }
            });
            dialog.show();
        }
    });
}
}

我运行这个应用程序并在模拟器上使用我的键盘输入运行良好。 但是,我也在我的安卓设备上运行,当我点击按钮时,文本没有改变...... 我的代码有什么问题??

【问题讨论】:

  • 两个操作系统版本相同?
  • 如果您在 onClick 中已有的 Toast 中包含 editShowName,它会说明什么?新文本还是旧文本?
  • JHH // 我已经检查了 editShowName 并且它可以正常获取文本。只是 setText() 不起作用。

标签: java android android-listview android-edittext settext


【解决方案1】:

这就是我在更改几行代码后的工作方式。

final String[] items=getResources().getStringArray(R.array.tvshow);

//你可以继续使用 ListAdapter。

final ArrayAdapter myAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,items);

//PositiveButton的onClick方法里面

items[position]=editShowName; myAdapter.notifyDataSetChanged();

每当适配器的数据发生变化时,您都需要调用 Adapter.notifyDataSetChanged()。

【讨论】:

  • 谢谢。好吧,先得到字符串数组并使用它,一切正常。
  • 每当附加到适配器的数据发生变化时,您需要调用 Adapter.notifyDataSetChanged();它将刷新视图本身。访问developer.android.com/reference/android/widget/…
猜你喜欢
  • 2012-07-11
  • 2013-06-18
  • 1970-01-01
  • 2022-07-29
  • 1970-01-01
  • 2013-03-13
  • 2022-11-07
  • 2012-12-21
  • 1970-01-01
相关资源
最近更新 更多