我正在尝试将弹出式活动中的字符串传递回onActivityResult
,但永远不会调用MainActivity.java
。
在阅读了很多SO主题之后,我已经检查了每个常见的错误,但我还没有找到任何解决方案。
我的代码:
在@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if (resultCode == Activity.RESULT_OK) {
String phone = data.getStringExtra("result");
addPhonesAction(phone);
}
}
}
public void addPhonesPopUp(View v){
Intent phoneDialog = new Intent(MainActivity.this, AddPhoneDialog.class);
startActivityForResult(phoneDialog, 1);
}
public void okAction(View v) {
EditText phoneText = (EditText) findViewById(R.id.phoneDialog);
String result = phoneText.getText().toString();
Intent returnIntent = new Intent();
returnIntent.putExtra("result", result);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
public void cancelAction(View v){
finish();
}
在AddPhoneDialog.java中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.gus.uniman">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".AddPhoneDialog"
android:theme="@style/Theme.AppCompat.Light.Dialog.Alert"></activity>
</application>
</manifest>
你可以帮我这个吗?
感谢
编辑: 的AndroidManifest.xml
{{1}}
答案 0 :(得分:1)
尝试更改
Intent returnIntent = new Intent();
到
Intent returnIntent = getIntent();
答案 1 :(得分:1)
为了将此标记为已解决,我后来发现我犯了一个愚蠢的错误,我在点击“取消”时调用了okAction
,而不是在点击ok
时执行此操作。我很抱歉这样一个菜鸟,我应该在问之前找到问题做得更好。
感谢大家花时间发表评论和回复
答案 2 :(得分:0)
设定适当的结果例如 AddPhoneDialog 中的RESULT_OK或RESULT_CANCEL。
onActivityResult应该在具有内置startActivityForResult方法的类中实现。