【问题标题】:Problem with secondary Activity cant get data from texView (Solved -- Oleg Golomoz Answer)辅助 Activity 无法从 texView 获取数据的问题(已解决——Oleg Golomoz 答案)
【发布时间】:2019-08-02 16:04:58
【问题描述】:

您好,我的应用中有 2 个活动,我会从第一个活动中获取数据并将它们插入到第二个活动中。

图片: 我有 2 个日期选择器来选择日期范围,并将其保存在 texView 和 texView2 上。

代码:主要活动

selectDate = (Button) findViewById(R.id.button); date = (TextView) findViewById(R.id.textView);

    selectDate2 = (Button) findViewById(R.id.button2);
    date2 = (TextView) findViewById(R.id.textView2);

    selectDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            calendar = Calendar.getInstance();
            year = calendar.get(Calendar.YEAR);
            month = calendar.get(Calendar.MONTH);
            dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
            datePickerDialog = new DatePickerDialog(MainActivity.this,
                    new DatePickerDialog.OnDateSetListener() {
                        @Override
                        public void onDateSet(DatePicker datePicker, int year, int month, int day) {
                            date.setText("Entrada: "+day + "/" + (month + 1) + "/" + year);
                        }
                    }, year, month, dayOfMonth);
            datePickerDialog.show();
        }
    });


    selectDate2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            calendar2 = calendar2.getInstance();
            year2 = calendar2.get(Calendar.YEAR);
            month2 = calendar2.get(Calendar.MONTH);
            dayOfMonth2 = calendar2.get(Calendar.DAY_OF_MONTH);
            datePickerDialog2 = new DatePickerDialog(MainActivity.this,
                    new DatePickerDialog.OnDateSetListener() {
                        @Override
                        public void onDateSet(DatePicker datePicker, int year, int month, int day) {
                            date2.setText("Salida: "+day + "/" + (month + 1) + "/" + year);
                        }
                    }, year2, month2, dayOfMonth2);
            datePickerDialog2.show();
        }
    });

活动2:

package com.example.mand.consumirapirest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class json extends AppCompatActivity {

    TextView tvJSON;
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_json);
        setTextView();
    }

    public void setTextView() {
        tvJSON = (TextView) findViewById(R.id.tvJSON);
        textView = (TextView) findViewById(R.id.textView);

        String s = textView.getText().toString();

        tvJSON.setText(s);


        //String text = textView.getText().toString();
        //return text;
    }

    /*public String getText()
    {

    }*/
}

任何想法谢谢..!

【问题讨论】:

标签: java android


【解决方案1】:

第一次活动中的某个地方 (MainActivity.java):

Button button = findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);

        // Pass some data
        // Key "DATE_KEY" is static field from SecondActivity
        intent.putExtra(DATE_KEY, "20.03.2019");

        startActivity(intent);
    }
});

在第二个活动中(SecondActivity.java):

public class SecondActivity extends AppCompatActivity {

    static final String DATE_KEY = "DATE_KEY";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        // Read passed data - String "20.03.2019"
        String date = getIntent().getStringExtra(DATE_KEY);
    }
}

【讨论】:

    【解决方案2】:

    试试这个

    在您的 MainActivity 中

    buscarButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
    
       startActivity(new Intent(MainActivity.this, json.class).putExtra("extra1",date.getText().toString()).putExtra("extra2",date2.getText().toString()));
      }
    });
    

    在您的 json 活动中

    if (getIntent().hasExtra("extra1")){
        tvJSON.setText(getIntent().getStringExtra("extra1"));
     }
    
     if (getIntent().hasExtra("extra2")){
      textView.setText(getIntent().getStringExtra("extra2"));
     }
    

    【讨论】:

    • 当单击按钮打开新活动时,我的应用崩溃并关闭...
    • 我在主要活动上有这个: startActivity(new Intent(MainActivity.this, json.class).putExtra("extra1","Entrada: "+dayOfMonth + "/" + (month + 1 ) + "/" + year).putExtra("extra2","Salida: "+dayOfMonth + "/" + (month + 1) + "/" + year));次要活动:TextView tvJSON;文本视图 tvJSON2; tvJSON.setText(getIntent().getStringExtra("extra1")); tvJSON2.setText(getIntent().getStringExtra("extra2"));
    • 我试试我的代码有错误谢谢你帮了我很多。
    【解决方案3】:

    在调用第二个活动时使用startActivityForResult,然后在第二个活动中使用setResult 将选定的值带回第一个活动:

    在 FirstActivity 中:

    void openSecondActivity(){
        Intent intent = Intent(context, SecondActivity.class)
        startActivityForResult(intent,1004)
        }
    
    @Override
     void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == 1004) {
                if (resultCode == Activity.RESULT_OK) {
    //do something with results
               }
            super.onActivityResult(requestCode, resultCode, data)
        }
    

    在 SecondActivity 中:

    void returnResult(String result){
    Intent returnIntent = new Intent()
    returnIntent.putExtra("result", result)
    setResult(Activity.RESULT_OK, returnIntent)
    finish()
    }
    

    【讨论】:

      【解决方案4】:

      根据documentation.

      从 FirstActivity 发送数据:

      public void sendMessage(View view) {
          Intent intent = new Intent(this, SecondActivity.class);
          String message = date.getText().toString();
          String message2 = date2.getText().toString();
          intent.putExtra(EXTRA_MESSAGE, message);
          intent.putExtra(EXTRA_MESSAGE_2, message2);
          startActivity(intent);
      }
      

      在 SecondActivity 中接收数据:

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_second);
      
          // Get the Intent that started this activity and extract the string
          Intent intent = getIntent();
          String message = intent.getStringExtra(FirstActivity.EXTRA_MESSAGE);
          String message2 = intent.getStringExtra(FirstActivity.EXTRA_MESSAGE_2);
      
          // Capture the layout's TextView and set the string as its text
          TextView textView = findViewById(R.id.textView);
          textView.setText(message);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-26
        • 2019-09-27
        • 2013-06-09
        • 1970-01-01
        • 2021-09-14
        • 1970-01-01
        相关资源
        最近更新 更多