Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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文件更改XML按钮属性?_Java_Android_Xml_Debugging - Fatal编程技术网

如何从java文件更改XML按钮属性?

如何从java文件更改XML按钮属性?,java,android,xml,debugging,Java,Android,Xml,Debugging,我试图从java文件中更改按钮上显示的文本,但运气不太好。在各种论坛上搜索了一段时间,并进行了谷歌搜索之后,我学会了创建一个新按钮,然后使用button.setText。然而,当我的应用程序突然结束,显示一条关于被迫退出的消息后,我决定进行一些调试。我发现问题出在这个Java类中 package com.KenanDeHart.thebasics; import android.app.Activity; import android.os.Bundle; import android.vie

我试图从java文件中更改按钮上显示的文本,但运气不太好。在各种论坛上搜索了一段时间,并进行了谷歌搜索之后,我学会了创建一个新按钮,然后使用button.setText。然而,当我的应用程序突然结束,显示一条关于被迫退出的消息后,我决定进行一些调试。我发现问题出在这个Java类中

package com.KenanDeHart.thebasics;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.content.Intent;



public class Showrole extends Activity {
    public static int players;
    public static int idx;
    public static int[] playArray;
    public static Button nextplayerButton =null;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.show_role);

            Bundle extras = getIntent().getExtras();
            Showrole.players = extras.getInt("PLAYERS");


            for (idx = 0; idx < players ; ++idx){

                display(idx);
                ++idx;
            }


        }








     public void display(int idx){
        Bundle extras = getIntent().getExtras();
        playArray = extras.getIntArray("PLAYARRAY");
        nextplayerButton = (Button) findViewById(R.id.nextplayer);
        nextplayerButton.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
        nextplayerButton.setText(playArray[Showrole.idx]);
        }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();
    }




    public void next(){

        Bundle extras = getIntent().getExtras();
        Button  button = (Button)findViewById(R.id.nextplayer);
        button.setText("Next Player");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }



    }
}
更具体地说,这条线

nextplayerButton.setText(playArray[Showrole.idx]);
当我按下continue时,一连串的事情发生了

  • 打开一个名为

    ZygoteInit$MethodAndArgsCaller.run()
  • 我的手机震动一次
  • 大约3秒钟过去了
  • 我的手机震动三次很快
  • 节目结束了
  • 这是我的航海日志

    注意这个错误

    11-30 12:47:28.770: E/AndroidRuntime(9770):     at com.KenanDeHart.thebasics.Showrole$1.onClick(Showrole.java:51)
    

    我真的不确定这里发生了什么。这是我第一次使用Java,我只使用了两天。我希望这个问题能解释得足够清楚,我向你保证我已经做了研究,但没有结果。我真的很感激任何人能给我的帮助。多谢各位

    通常情况下,这应该是有效的:

    setContentView(R.layout.activity_mail_sender);
            int i = 2;
            btn = (Button) findViewById(R.id.autoSendBtn);
            btn.setText(""+i);
    

    如果按钮已经存在于xml文件中,则不必在java代码中创建它。一定还有别的问题。如果只是更改按钮上显示的文本,请发布您的logcat错误

    将此添加为实例变量(在所有方法之外)

    获取onCreate()方法中按钮的引用


    根据LogCat,在第42行的display()方法中有一个NullpointerException

    原因:java.lang.NullPointerException 11-30 06:44:37.147: E/AndroidRuntime(6601):在 com.KenanDeHart.thebasics.Showrole.display(Showrole.java:42)


    只需检查是否有未初始化的内容。

    好的,我知道发生了什么

    数组“playArray”未从我的其他意图正确传递。我查看变量树,发现它实际上等于null。我通过发送区域的大小(这是上一个类中确定的变量)并在到达后创建数组来解决这个问题


    谢谢大家的帮助。堆栈溢出的支持和帮助给我留下了深刻的印象。

    你能在这里发布你的logcat消息吗?我真的不理解将idx变量传递给display方法的用法,虽然你传递了它,但你使用了ShowRole.idx而不是传递的idx。为什么呢?尝试调试它,并检查您在
    nextplayerButton.setText(playArray[Showrole.idx])行中获得的值第51行。他想在java文件中更改。查看有关问题的全部内容。是的,@chintankhetiya,但他不想在java文件中创建按钮,但他还是尝试了。“我已经学会了创建一个新按钮,然后使用button.setText。”所以我建议您可以动态设置文本。没有必要动态创建它,除非他想。当我尝试使用您提供的代码添加实例变量时,我收到一个错误,上面写着“标记上的语法错误,删除这些标记”。嘿,Kumar,我找到了我收到该错误的原因,我在类之外添加实例变量,而不是在所有方法之外。谢谢你的帮助。我能够找到问题似乎发生的具体行,并且正在研究如何正确声明/初始化该行中的所有变量。
    
    11-30 12:47:28.770: E/AndroidRuntime(9770):     at com.KenanDeHart.thebasics.Showrole$1.onClick(Showrole.java:51)
    
    setContentView(R.layout.activity_mail_sender);
            int i = 2;
            btn = (Button) findViewById(R.id.autoSendBtn);
            btn.setText(""+i);
    
    Button nextplayerButton =null;
    
    nextplayerButton = (Button) findViewById(R.id.nextplayer);
    nextplayerButton.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
    nextplayerButton.setText(""+i);
    }
    });