簡體   English   中英

如何將多個數據字符串發送回 MainActivity?

[英]How to send multiple data strings back to MainActivity?

我想使用意圖將多個輸入字段從一個活動發送到主要活動。 但是在那之后我的應用程序沒有運行。

我的輸入代碼是:-

子活動中的代碼以發送數據

ivHappy.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.putExtra("name",etName.getText());
            intent.putExtra("number",etNumber.getText());
            intent.putExtra("website",etWebsite.getText());
            intent.putExtra("loc",etLocation.getText());
            intent.putExtra("smileyCode",1);
            setResult(RESULT_OK,intent);
            Activity2.this.finish();
        }
    });

接收數據的代碼

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==ACTIVITY2){
        if(resultCode==RESULT_OK){
            int x = Integer.parseInt(data.getStringExtra("smileyCode"));
            if(x==1){
                ivPic.setImageResource(R.drawable.happy);
            }
            if(x==2){
                ivPic.setImageResource(R.drawable.neutral);
            }
            if(x==3){
                ivPic.setImageResource(R.drawable.sad);
            }
            number = data.getStringExtra("number");
            name = data.getStringExtra("name");
            website = data.getStringExtra("website");
            location = data.getStringExtra("loc");

            ivPic.setVisibility(View.VISIBLE);
            ivDial.setVisibility(View.VISIBLE);
            ivWeb.setVisibility(View.VISIBLE);
            ivLoc.setVisibility(View.VISIBLE);
        }

但這是行不通的。 那么我應該如何將多個輸入發送回 mainActivity?

在您獲取文本時的子活動中,您應該將它們轉換為字符串。 像這樣 theName.getText().toString()

請嘗試以下操作,因為在 String 中發送和接收數據總是更好,因此會發生轉換錯誤,但通過這種方式,您必須使您的onActivityResult方法足夠智能,以知道這個額外的內容是 String 還是 Int 或 Float 等。目前沒有辦法解決它但我認為SafeArgs很快就會解決這個問題(我希望)

在設置 Extra 時,將所有內容保留在 Int 中。

        intent.putExtra("name",etName.getText());
        intent.putExtra("number",etNumber.getText());
        intent.putExtra("website",etWebsite.getText());
        intent.putExtra("loc",etLocation.getText());
        intent.putExtra("smileyCode",Integer.toString(1));

同時提取額外的轉換字符串到給定的所需類型。

        intent.getExtra("name");
        intent.getExtra("number");
        intent.getExtra("website");
        intent.getExtra("loc");
        Integer.valueOf(intent.getExtra("smileyCode"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM