【问题标题】:Not able to get back to original activity using uri.parse method无法使用 uri.parse 方法恢复原始活动
【发布时间】:2015-06-13 17:51:42
【问题描述】:

我只是一个初学者。我正在尝试使用 uri.parse 来返回结果。 这是我的主要 java 文件。

package com.example.returnresult;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

int request_code=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void sendMessage(View v){
    Intent i = new Intent(this,Second.class);
    startActivityForResult(i,request_code);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent       data) {

    if(requestCode == request_code)
    {
        if(resultCode == RESULT_OK)
        {               
            Toast.makeText(this,data.getData().toString(),
                    Toast.LENGTH_SHORT).show();
        }
    }
}

}

此活动仅在屏幕上显示一个按钮以转到第二个活动。它工作正常。

这是第二个 java 文件。

package com.example.returnresult;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class Second extends Activity {

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


public void sendBack(View v){

    Intent i = new Intent();
    EditText txt = (EditText)findViewById(R.id.age);
    i.setData(Uri.parse(txt.getText().toString()));

    setResult(RESULT_OK,i);
    finish();
}

}

此活动显示一个 EditText 字段。它的 id 是年龄。它下面有一个按钮,必须将数据发送回第一个活动并显示 Toast。但是这个按钮不起作用。我无法解决问题。请帮忙!

【问题讨论】:

  • 不要使用Intent.setData()Intent.getData(),而是尝试使用Intent.putExtra()Intent.getExtra()。在stackoverflow.com/questions/920306/…的几个答案中得到了很好的解释

标签: java android android-layout android-intent


【解决方案1】:

您看到没有在第二个 java 文件中初始化按钮。如果你有,那么你应该使用

i.putExtra("string data", Uri.parse(txt.getText().toString()));

而不是

i.setData(Uri.parse(txt.getText().toString()));

也可以通过

检索信息
data.getStringExtra("string data")

而不是

data.getData().toString()

希望这会有所帮助。

【讨论】:

  • 感谢您的帮助。应用程序应该做的是单击一个按钮,它应该转到第二个活动并从那里返回结果并在第一个活动上显示祝酒词。但正如您所见,即使在主 java 文件中,我也没有声明按钮,只是定义了启动第二个活动的函数。同样,我在第二个中做了。即使我在第二个中声明了按钮,我也没有使用任何函数,除了 onClick,即 sendBack。虽然我尝试做你提到的它没有工作。还有其他建议吗?
  • 请在每个 if 块内 MainActivity 的 onActivityResult 中写一些日志消息,这样我们就可以准确地知道代码没有正确执行的地方。
猜你喜欢
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
  • 2018-08-26
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多