Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:setText()在设备上不工作,但在带有键盘输入的模拟器上工作_Java_Android_Android Listview_Android Edittext_Settext - Fatal编程技术网

Java Android:setText()在设备上不工作,但在带有键盘输入的模拟器上工作

Java Android:setText()在设备上不工作,但在带有键盘输入的模拟器上工作,java,android,android-listview,android-edittext,settext,Java,Android,Android Listview,Android Edittext,Settext,我正在android studio上制作一个简单的应用程序。 MainActivity有一个ListView,其中包含字符串数组中的项, 如果单击某个项目,将显示一个对话框。 该对话框有一个EdixText。我在上面写下文本,如果我点击肯定按钮,我点击的项目的文本视图将更改为我刚才写的内容。 对不起,我的英语不好。。。无论如何,这是我的MainActivity源代码 package com.softdept.sangkyu.swex01; import ... public class SW

我正在android studio上制作一个简单的应用程序。 MainActivity有一个ListView,其中包含字符串数组中的项, 如果单击某个项目,将显示一个对话框。 该对话框有一个EdixText。我在上面写下文本,如果我点击肯定按钮,我点击的项目的文本视图将更改为我刚才写的内容。 对不起,我的英语不好。。。无论如何,这是我的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();
        }
    });
}
}
我运行了这个应用程序,在模拟器上用我的键盘输入运行得很好。 然而,我也在我的android设备上运行,当我点击按钮时,文本保持不变。。。
我的代码有什么问题???

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

最终字符串[]items=getResources.getStringArrayR.array.tvshow

//您可以继续使用ListAdapter

final ArrayAdapter myAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,items); //正按钮的内部onClick方法 项目【位置】=editShowName; myAdapter.notifyDataSetChanged


每当适配器的数据更改时,您需要调用Adapter.notifyDataSetChanged

这两个版本的操作系统版本相同?如果在onClick中已有的Toast中包含editShowName,它会说什么?新文本还是旧文本?JHH//我已经检查了editShowName,它正常得到了文本。只是setText不起作用,谢谢。首先,在获取字符串数组并使用它之后,所有工作都正常;它将刷新视图本身。参观