Android启动活动以获取结果

Android启动活动以获取结果,android,Android,我对android完全是个新手。我想将用户输入从一个活动发送到另一个活动,当我输入文本并点击sendText按钮时,我返回到主活动,但在文本视图中,结果应该是“null”。已经看过其他答案,但仍然没有乐趣 主活动,接收来自其他活动的用户输入 TextView textView1; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceStat

我对android完全是个新手。我想将用户输入从一个活动发送到另一个活动,当我输入文本并点击sendText按钮时,我返回到主活动,但在文本视图中,结果应该是“null”。已经看过其他答案,但仍然没有乐趣

主活动,接收来自其他活动的用户输入

TextView textView1;
     public class MainActivity extends Activity {

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

    textView1 = (TextView) findViewById(R.id.textView1);


   }
    public void relativeLayout(View view)
   {
   // Create The  Intent and Start The Activity to get The message

      Intent relativeLayoutIntent=new Intent(MainActivity.this,ExplicitRelativeLayout.class);         
    startActivityForResult(relativeLayoutIntent, 2);
   }
     @Override
     protected void onActivityResult(int requestCode,int resultCode,Intent data)                
    {
      super.onActivityResult(requestCode, resultCode, data);

    // check if the request code is same as what is passed. here it is 2

    if(requestCode==2)
    {
        if(null!=data)
        {
            // fetch the message String
            String name = data.getStringExtra("name");
            String email = data.getStringExtra("email");
            String phone = data.getStringExtra("phone");

            // Set the message string in textView
            textView1.setText("Name: " + name + ""  + "\n" + "Email: " + email + " " + "\n" +"Phone:" + phone );
        }
RelativeLayout活动,用户输入文本

public class ExplicitRelativeLayout extends AppCompatActivity {


   EditText setName;
   EditText setEmail;
   EditText setPhone;


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

    // Get the reference of Edit Text
    setName = (EditText) findViewById(R.id.setName);
    setEmail = (EditText) findViewById(R.id.setEmail);
    setPhone = (EditText) findViewById(R.id.setPhone);
}


public void sendText (View views)
{
    // get the Entered  message
    String name=setName.getText().toString();
    String email= setEmail.getText().toString();
    String phone=setPhone.getText().toString();
    Intent intentmessage = new Intent();

    // put the message in Intent
    intentmessage.putExtra("Name:",name);
    intentmessage.putExtra("Email:",email);
    intentmessage.putExtra("Phone:",phone);

    // Set The Result in Intent
    setResult(2,intentmessage);

    // finish The activity
    finish();
}
}

}

Intent类携带所有额外数据,并使用HashMap结构查找具有给定id的项目。您的问题是,您在两个不同的Intent类中为每个项目设置了不同的id,例如:

在相对活动中:

intentmessage.putExtra("Name:",name);
您的id是“姓名:”

在您的主要活动中:

String name = data.getStringExtra("name");
你的身份证是“姓名”


确保您在intent类中使用的两个id相同,并且可以正常工作。

在两个类中使用的密钥似乎不匹配

使用
intentmessage.putExtra(“name”,name)


而不是
intentmessage.putExtra(“名称:”,名称)

问题在于,当您创建
键串时,请看一看

//put the message in Intent
intentmessage.putExtra("Name:",name);
intentmessage.putExtra("Email:",email);
intentmessage.putExtra("Phone:",phone);
在这个
putExtra
上,
keyString
Name:
Email:
Phone:
,您正试图用这个
keyString
获取字符串

// fetch the message String
String name = data.getStringExtra("name");
String email = data.getStringExtra("email");
String phone = data.getStringExtra("phone");
您正在寻找一个
名称
作为
键串
,但上面没有任何内容,因为您决定将其命名为
名称:

看看

字符串为:

附加数据的名称,带有包前缀

其值为:

捆绑数据值


希望有帮助。

更改您的ExplicitRelativeLayout活动代码::

  • 设置结果(结果正常,意图)
  • 在两个活动上保持相同的键

  • 你能贴日志吗?看看我的答案看看你的答案:)你应该把给你最好解释的答案标记为正确答案,而不是第一个,只是说:我标记了解决我问题的答案,@Remees M answer,:)快乐。。如果答案对您有帮助,请接受。感谢所有帮助:)
    // fetch the message String
    String name = data.getStringExtra("name");
    String email = data.getStringExtra("email");
    String phone = data.getStringExtra("phone");
    
     public void sendText (View views){
                // get the Entered  message
                String name=setName.getText().toString();
                String email= setEmail.getText().toString();
                String phone=setPhone.getText().toString();
                Intent intentmessage = new Intent();
    
                // put the message in Intent
                intentmessage.putExtra("name:",name);
                intentmessage.putExtra("email:",email);
                intentmessage.putExtra("phone:",phone);
    
                // Set The Result in Intent
                setResult(RESULT_OK,intentmessage);
    
                // finish The activity
                finish();
            }