我无法将数据从第一个 activity (MapActivity) 发送到第二个 activity (NewContact)
I am not able to send data from first activity (MapActivity) to the second activity (NewContact)
问题是我无法将数据从 activity 2 发送到 activity 1。
这是 activity 1 (NewContact.java)
的快照
首先 activity (NewContact) 在底部我有一个 TextView,我在那个 TextView 上实现了一个 OnClickListener。当用户单击此 TextView 时,Second Activity (MapActivity) 将打开。
用户需要搜索地址,底部会出现一个圆形复选按钮,如果用户单击该按钮,则会出现一个警告对话框,询问是否添加位置。
如果用户单击 ADD,则相同的位置将保存到 FirstActivity 的 TextView,即 NewContact.
activity_new_contact.xml
这是 TextView 的 ID
android:id="@+id/etUserAddress"
NewContact.java
TvAddress = (TextView)findViewById(R.id.etUserAddress);
Intent intent = getIntent();
String addText = intent.getStringExtra(MapActivity.EXTRA_TEXT);
TvAddress.setText(addText);
TvAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent = new Intent(NewContact.this, MapActivity.class);
startActivityForResult(intent,1);
}
});
我还在第一个 activity (NewContact) 的 onActivityResult 中实现了 requestCode,它位于这个函数的底部:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == REQUEST_CODE_GALLERY && resultCode == RESULT_OK)
{
Uri imageUri = data.getData();
CropImage.activity(imageUri)
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1, 1)
.start(this);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)
{
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK)
{
Uri resultUri = result.getUri();
mImageView.setImageURI(resultUri);
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE)
{
Exception error = result.getError();
}
}
super.onActivityResult(requestCode, resultCode, data);
//this requestCode is to send the data from one activity to other
if (requestCode == 1)
{
if (resultCode == RESULT_OK)
{
String myStr = data.getStringExtra("EXTRA_TEXT");
TvAddress.setText(myStr);
}
}
}
MapActivity.java
第二个 activity 我还创建了一个 public 静态字符串:
public static final String EXTRA_TEXT =
"com.example.sahil.phonebook.EXTRA_TEXT";
下面是第二个 activity 的代码,当用户选择一个位置时,将显示一个警告对话框,要求用户添加或取消。
如果用户点击添加按钮然后函数 sendDataBack();
将执行:
MapActivity.java
sendAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder a_builder = new AlertDialog.Builder(MapActivity.this);
a_builder.setMessage("Add Location?").setCancelable(false).setPositiveButton("Add", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which)
{ //if user clicks on yes button then this will implement
sendDataBack();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alertDialog = a_builder.create();
alertDialog.setTitle("Confirm Location");
alertDialog.show();
}
});
下面是函数的代码sendDataBack();
public void sendDataBack()
{
String addText = mSearchText.getText().toString();
Intent intent = new Intent(MapActivity.this, NewContact.class);
intent.putExtra(EXTRA_TEXT, addText);
setResult(1,intent);
}
您需要在任何变量中传递您的值,如下所示。
public void sendDataBack()
{
String addText = mSearchText.getText().toString();
Intent intent = new Intent(MapActivity.this, NewContact.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.putExtra("textValue", addText);
startActivity(intent);
}
访问下一个 NewContact 的意图 activity。
String addText = getIntent().getStringExtra("textValue");
问题是我无法将数据从 activity 2 发送到 activity 1。 这是 activity 1 (NewContact.java)
的快照首先 activity (NewContact) 在底部我有一个 TextView,我在那个 TextView 上实现了一个 OnClickListener。当用户单击此 TextView 时,Second Activity (MapActivity) 将打开。
用户需要搜索地址,底部会出现一个圆形复选按钮,如果用户单击该按钮,则会出现一个警告对话框,询问是否添加位置。 如果用户单击 ADD,则相同的位置将保存到 FirstActivity 的 TextView,即 NewContact.
activity_new_contact.xml
这是 TextView 的 ID
android:id="@+id/etUserAddress"
NewContact.java
TvAddress = (TextView)findViewById(R.id.etUserAddress);
Intent intent = getIntent();
String addText = intent.getStringExtra(MapActivity.EXTRA_TEXT);
TvAddress.setText(addText);
TvAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent = new Intent(NewContact.this, MapActivity.class);
startActivityForResult(intent,1);
}
});
我还在第一个 activity (NewContact) 的 onActivityResult 中实现了 requestCode,它位于这个函数的底部:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == REQUEST_CODE_GALLERY && resultCode == RESULT_OK)
{
Uri imageUri = data.getData();
CropImage.activity(imageUri)
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1, 1)
.start(this);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)
{
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK)
{
Uri resultUri = result.getUri();
mImageView.setImageURI(resultUri);
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE)
{
Exception error = result.getError();
}
}
super.onActivityResult(requestCode, resultCode, data);
//this requestCode is to send the data from one activity to other
if (requestCode == 1)
{
if (resultCode == RESULT_OK)
{
String myStr = data.getStringExtra("EXTRA_TEXT");
TvAddress.setText(myStr);
}
}
}
MapActivity.java
第二个 activity 我还创建了一个 public 静态字符串:
public static final String EXTRA_TEXT =
"com.example.sahil.phonebook.EXTRA_TEXT";
下面是第二个 activity 的代码,当用户选择一个位置时,将显示一个警告对话框,要求用户添加或取消。
如果用户点击添加按钮然后函数 sendDataBack();
将执行:
MapActivity.java
sendAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder a_builder = new AlertDialog.Builder(MapActivity.this);
a_builder.setMessage("Add Location?").setCancelable(false).setPositiveButton("Add", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which)
{ //if user clicks on yes button then this will implement
sendDataBack();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alertDialog = a_builder.create();
alertDialog.setTitle("Confirm Location");
alertDialog.show();
}
});
下面是函数的代码sendDataBack();
public void sendDataBack()
{
String addText = mSearchText.getText().toString();
Intent intent = new Intent(MapActivity.this, NewContact.class);
intent.putExtra(EXTRA_TEXT, addText);
setResult(1,intent);
}
您需要在任何变量中传递您的值,如下所示。
public void sendDataBack()
{
String addText = mSearchText.getText().toString();
Intent intent = new Intent(MapActivity.this, NewContact.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.putExtra("textValue", addText);
startActivity(intent);
}
访问下一个 NewContact 的意图 activity。
String addText = getIntent().getStringExtra("textValue");