亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我不能導入一個字符串數組,因為日志中有一個錯誤

為什么我不能導入一個字符串數組,因為日志中有一個錯誤

素胚勾勒不出你 2022-09-28 09:59:15
我正在嘗試設置一個按鈕,使用數組(概念類似于基于文本的冒險游戲)顯示對話框的下一行,但是當我導入.xml時,這只是一個存儲所有對話框的簡單按鈕。onClickpackage com.example.project;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageButton;import android.widget.TextView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity implements View.OnClickListener {Button btn_message;String[] messages;    int index = 0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //Importing values        messages = getResources().getStringArray(R.array.messages);        btn_message=findViewById(R.id.btn_message);        //set Value to varibles        btn_message.setOnClickListener(this);    }    @Override    public void onClick(View v) {        index++;        btn_message.setText(messages [index]);    }}如果需要日志:java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.CharSequence        at com.example.project.MainActivity.onClick(MainActivity.java:34)        at android.view.View.performClick(View.java:6256)        at android.view.View$PerformClick.run(View.java:24701)        at android.os.Handler.handleCallback(Handler.java:789)        at android.os.Handler.dispatchMessage(Handler.java:98)        at android.os.Looper.loop(Looper.java:164)        at android.app.ActivityThread.main(ActivityThread.java:6541)        at java.lang.reflect.Method.invoke(Native Method)        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
查看完整描述

3 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

該方法接收一個字符串,它是CharSequence的實現,當您這樣做時,您將獲得一個 ArrayList,其中包含元素中行的每個單元格,因此是一個數組數組。Button#setText()messages[index]


您應該將它們收集在一個字符串中。如果列表為 ,則一種方法是:List<String>


String stringMessage = String.join(", ", messages[index]);

然后,您應該能夠毫無例外地制作cal:setText()


@Override

    public void onClick(View v) {

        index++;

        String stringMessage = String.join(", ", messages[index]);

        btn_message.setText(stringMessage);

    }

像這樣,您將用逗號和空格將它們連接起來,如果您想以某種方式加入它們,只需在,#join()


如果數組列表不是字符串,則可以使用 lambda 執行相同的操作:


String messageString = messages[index].stream().map(Object::toString)

                        .collect(Collectors.joining(", "));


查看完整回答
反對 回復 2022-09-28
?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

您可以將其設置為遵循條件,如果 onClick 以避免超出范圍異常


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

Button btn_message;

String[] messages;

int index = 0;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    messages = getResources().getStringArray(R.array.messages);

    btn_message=findViewById(R.id.btn_message);


    //set Value to varibles


    btn_message.setText(messages[index++]);

    btn_message.setOnClickListener(this);

}


@Override

public void onClick(View v) {

    if(index < messages.length) {

        btn_message.setText(messages[index]);

        index++;

    }else{

        index = 0;

        btn_message.setText(messages[index++]);

    }

}

}


查看完整回答
反對 回復 2022-09-28
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

試試這個可能會有所幫助

index++; btn_message.setText(messages [index].toString());


查看完整回答
反對 回復 2022-09-28
  • 3 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號