Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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
Android 如何使用按钮更改文本视图_Android_Button_Textview - Fatal编程技术网

Android 如何使用按钮更改文本视图

Android 如何使用按钮更改文本视图,android,button,textview,Android,Button,Textview,如果这个问题看起来很明显,我很抱歉,但我是一个初学者,我想弄清楚Android是如何工作的 我想做的是用两个按钮(1和2)编辑一个小的虚拟键盘 是否可以通过在onCreate()方法中使用setOnClickButton()更改一个TextView,该视图应该显示用户键入的内容 我这样问是因为我在另一个stackoverflow主题中读到onCreate()方法一次性创建活动,并且不可能通过在onCreate()方法中引入代码来多次更新它 这是我的密码: public class MainAct

如果这个问题看起来很明显,我很抱歉,但我是一个初学者,我想弄清楚Android是如何工作的

我想做的是用两个按钮(1和2)编辑一个小的虚拟键盘

是否可以通过在onCreate()方法中使用setOnClickButton()更改一个
TextView
,该视图应该显示用户键入的内容

我这样问是因为我在另一个stackoverflow主题中读到onCreate()方法一次性创建活动,并且不可能通过在onCreate()方法中引入代码来多次更新它

这是我的密码:

public class MainActivity extends Activity {
Button button1;
Button button2;

public void arrayToString(ArrayList<String> toto, String tota){
    for (String s : toto)
    {
        tota += s + " ";
    }
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    setContentView(R.layout.activity_main);

    final ArrayList<String> displayList = new ArrayList<String>();
    final String displayString = "";


    final TextView displayTextView = (TextView)findViewById(R.id.screen1);

    Button button1 = (Button)findViewById(R.id.one);
    Button button2 = (Button)findViewById(R.id.two);


    button1.setOnClickListener( new OnClickListener(){
        public void onClick(View v){
            displayList.add("1");
            arrayToString(displayList,displayString);
            displayTextView.setText(displayString);
        }    
    });

    button2.setOnClickListener( new OnClickListener(){
        public void onClick(View v){
            displayList.add("2");
            arrayToString(displayList,displayString);
            displayTextView.setText(displayString);
        }    
    });  
}
}
公共类MainActivity扩展活动{
按钮1;
按钮2;
公共无效arrayToString(ArrayList ToToTo,String ToToTo){
for(字符串s:toto)
{
tota+=s+“”;
}
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终ArrayList displayList=新ArrayList();
最终字符串displayString=“”;
最终文本视图显示文本视图=(文本视图)findViewById(R.id.screen1);
Button button1=(按钮)findViewById(R.id.one);
Button button2=(按钮)findViewById(R.id.two);
button1.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
显示列表。添加(“1”);
arrayToString(displayList,displayString);
displayTextView.setText(显示字符串);
}    
});
button2.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
显示列表。添加(“2”);
arrayToString(displayList,displayString);
displayTextView.setText(显示字符串);
}    
});  
}
}

再次感谢,

您的代码没有问题。您定义了两个按钮,并为每个按钮设置OnClickListener。当您按下按钮时,代码将被执行。onClickListener中的代码与onCreate()的定义无关。

顾名思义,onClickListener“侦听单击。因此,每次单击按钮时,都会执行onClick()中的代码。因此,每次按下按钮时,displayTextView.setText(displayString)都将运行。请尝试以下代码

public class MainActivity extends Activity {
    Button button1;
    Button button2;

    public String arrayToString(ArrayList<String> toto){
        String tota = "";
        for (String s : toto)
        {
            tota += s + " ";
        }
        retrun tota;
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        setContentView(R.layout.activity_main);

        final ArrayList<String> displayList = new ArrayList<String>();
        String displayString = "";


        final TextView displayTextView = (TextView)findViewById(R.id.screen1);

       button1 = (Button)findViewById(R.id.one);
       button2 = (Button)findViewById(R.id.two);


button1.setOnClickListener( new OnClickListener(){
    public void onClick(View v){
        displayList.add("1");
        displayString = arrayToString(displayList);
        displayTextView.setText(displayString);
    }    
});

button2.setOnClickListener( new OnClickListener(){
    public void onClick(View v){
        displayList.add("2");
        displayString = arrayToString(displayList);
        displayTextView.setText(displayString);
    }    
});




}
}
公共类MainActivity扩展活动{
按钮1;
按钮2;
公共字符串arrayToString(ArrayList toto){
字符串tota=“”;
for(字符串s:toto)
{
tota+=s+“”;
}
雷特朗·托塔;
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终ArrayList displayList=新ArrayList();
字符串displayString=“”;
最终文本视图显示文本视图=(文本视图)findViewById(R.id.screen1);
button1=(按钮)findViewById(R.id.one);
button2=(按钮)findViewById(R.id.two);
button1.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
显示列表。添加(“1”);
displayString=arrayToString(displayList);
displayTextView.setText(显示字符串);
}    
});
button2.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
显示列表。添加(“2”);
displayString=arrayToString(displayList);
displayTextView.setText(显示字符串);
}    
});
}
}

这是可以做到的。你有什么错误吗?是的,有可能
onClick
listener每次单击按钮时都会被调用。是的,实际上,当用户按下按钮时,我的按钮没有响应,我也不知道为什么……可能是activity_main.xml布局文件的问题。可能在按钮顶部有一些透明的布局。您是否在onClick中放置了一些日志?发布“activity_main.xml”的xml文件。textView的新文本是否会显示在正在运行的活动上,或者我是否需要通过再次使用onCreat()创建活动来“刷新”它?不,您不需要调用所有这些。您发布的代码将在每次单击时刷新。因此,无需“刷新”