辅助Activity的问题无法从textView获取数据(Solved - Oleg Golomoz Answer)

问题描述 投票:0回答:4

嗨我在我的应用程序中有2个活动,我将从第一个活动中获取数据并将其插入第二个活动中。

图片:我有2个日期选择器来选择日期范围,我将它保存在textView和文本View 2上。

enter image description here enter image description here

代码:主要活动

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
4个回答
0
投票

根据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);
}

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);
    }
}

1
投票

在调用第二个活动时使用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()
}

1
投票

试试这个

在您的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"));
 }
© www.soinside.com 2019 - 2024. All rights reserved.