问题是无法从TextView获取数据(已解决--Oleg Golomoz的答案)

10 浏览
0 Comments

问题是无法从TextView获取数据(已解决--Oleg Golomoz的答案)

嗨,我在我的应用中有两个活动,我想从第一个活动中获取数据并将其插入到第二个活动中。\n图片:\n我有两个日期选择器,用于选择日期范围,并将其保存在textView和textView2中。\n代码:MainActivity\nselectDate =(Button)findViewById(R.id.button);\ndate =(TextView)findViewById(R.id.textView);\nselectDate2 =(Button)findViewById(R.id.button2);\ndate2 =(TextView)findViewById(R.id.textView2);\nselectDate.setOnClickListener(新的View.OnClickListener(){\n@Override\npublic void onClick(View view){\ncalendar = Calendar.getInstance();\nyear = calendar.get(Calendar.YEAR);\nmonth = calendar.get(Calendar.MONTH);\ndayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);\ndatePickerDialog = new DatePickerDialog(MainActivity.this,\n新的DatePickerDialog.OnDateSetListener(){\n@Override\npublic void onDateSet(DatePicker datePicker,int year,int month,int day){\ndate.setText(\"Entrada:\"+day + \"/\"+(month + 1)+ \"/\"+ year);\n}\n},year,month,dayOfMonth);\ndatePickerDialog.show();\n}\n});\nselectDate2.setOnClickListener(新的View.OnClickListener(){\n@Override\npublic void onClick(View view){\ncalendar2 = calendar2.getInstance();\nyear2 = calendar2.get(Calendar.YEAR);\nmonth2 = calendar2.get(Calendar.MONTH);\ndayOfMonth2 = calendar2.get(Calendar.DAY_OF_MONTH);\ndatePickerDialog2 = new DatePickerDialog(MainActivity.this,\n新的DatePickerDialog.OnDateSetListener(){\n@Override\npublic void onDateSet(DatePicker datePicker,int year,int month,int day){\ndate2.setText(\"Salida:\"+day + \"/\"+(month + 1)+ \"/\"+ year);\n}\n},year2,month2,dayOfMonth2);\ndatePickerDialog2.show();\n}\n});\nActivity2:\npackage com.example.mand.consumirapirest;\nimport android.support.v7.app.AppCompatActivity;\nimport android.os.Bundle;\nimport android.widget.TextView;\npublic class json extends AppCompatActivity {\nTextView tvJSON;\nTextView textView;\n@Override\nprotected void onCreate(Bundle savedInstanceState){\nsuper.onCreate(savedInstanceState);\nsetContentView(R.layout.activity_json);\nsetTextView();\n}\npublic void setTextView(){\ntvJSON =(TextView)findViewById(R.id.tvJSON);\ntextView =(TextView)findViewById(R.id.textView);\nString s = textView.getText()。toString();\ntvJSON.setText(s);\n}\n}

0
0 Comments

问题出现的原因是在MainActivity中的点击事件中,通过Intent传递数据给json活动时没有正确地使用getStringExtra方法来获取数据,导致应用崩溃。解决方法是在json活动中使用getIntent().getStringExtra方法来获取数据,并在TextView中显示出来。

尝试如下修改:

在MainActivity中的点击事件中添加以下代码:

buscarButton.setOnClickListener(new View.OnClickListener() {
    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")) {
    tvJSON2.setText(getIntent().getStringExtra("extra2"));
}

原来的代码中,MainActivity中的Intent传递数据的部分修改为:

startActivity(new Intent(MainActivity.this, json.class)
        .putExtra("extra1", "Entrada: " + dayOfMonth + "/" + (month + 1) + "/" + year)
        .putExtra("extra2", "Salida: " + dayOfMonth + "/" + (month + 1) + "/" + year));

在json活动中,添加以下代码来声明TextView:

TextView tvJSON;
TextView tvJSON2;

然后在json活动中的tvJSON.setText和tvJSON2.setText方法中使用getIntent().getStringExtra来获取数据并显示出来。

经过以上修改,问题应该得到解决。

0
0 Comments

问题的原因是在第二个Activity中无法从TextView中获取数据。解决方法是使用startActivityForResult方法在调用第二个Activity时,然后在第二个Activity中使用setResult方法将选定的值带回到第一个Activity中。

在第一个Activity中,通过调用openSecondActivity方法来打开第二个Activity:

void openSecondActivity(){
    Intent intent = Intent(context, SecondActivity.class)
    startActivityForResult(intent,1004)
    }

然后在第一个Activity中,重写onActivityResult方法来接收第二个Activity返回的结果:

void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 1004) {
            if (resultCode == Activity.RESULT_OK) {
//对结果进行操作
           }
        super.onActivityResult(requestCode, resultCode, data)
    }

在第二个Activity中,通过调用returnResult方法来返回结果给第一个Activity:

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

0
0 Comments

问题出现的原因是在第一个活动中,通过Intent传递了一个名为"DATE_KEY"的数据到第二个活动,但是在第二个活动中无法正确地获取这个数据。

解决方法是在第二个活动中,需要使用相同的键值"DATE_KEY"来获取传递的数据。具体做法是通过getIntent().getStringExtra(DATE_KEY)来获取传递的字符串数据。

以下是修改后的代码:

第一个活动(MainActivity.java)中的代码:

Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        // 传递数据
        // "DATE_KEY"是第二个活动中的静态字段
        intent.putExtra(SecondActivity.DATE_KEY, "20.03.2019");
        startActivity(intent);
    }
});

第二个活动(SecondActivity.java)中的代码:

public class SecondActivity extends AppCompatActivity {
    static final String DATE_KEY = "DATE_KEY";
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        // 读取传递的数据 - 字符串 "20.03.2019"
        String date = getIntent().getStringExtra(DATE_KEY);
    }
}

通过以上修改,第二个活动就能正确地获取到从第一个活动传递过来的数据了。

0