要求是这样的:主界面上有一个“登录”按钮,单击“登录”按钮后打开一个新的Activity
新的Activity上面有输入用户名和密码的TextEdit控件和一个“退出”按钮,在用户关闭这个Activty后,将用户输入的用户名和密码传递到主界面中。以下是我写的程序:
第一个页面的XML文件如下:<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="#FF0000" >
    <TextView
        android:id="@+id/textView01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textSize="18dip"
        android:textColor="#ffffff" />    <Button
        android:id="@+id/button01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="返回" /></LinearLayout>第二个页面的XML文件如下:<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登陆我的安卓吧!"
        android:textSize="30dip" />    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="用户名"
            android:textSize="20dip" />        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="numberPassword" >            <requestFocus />
        </EditText>    </LinearLayout>    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密  码" 
            android:textSize="20dip"/>
        
         <EditText
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPassword" />
            </LinearLayout>    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="退出" />
   
</LinearLayout>java代码如下:package com.example.logon07111030;import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class MainActivity extends Activity {  Button button01;
 TextView textView01;
protected Intent bundle;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        button01=(Button) findViewById(R.id.button01);
        textView01=(TextView) findViewById(R.id.textView01);
        
       
        button01.setOnClickListener(new OnClickListener(){  //按钮接口监听器 public void onClick(View v) {
// TODO Auto-generated method stub

Intent intent=new Intent();
intent.setClass(MainActivity.this, Second.class);
startActivity(intent);
MainActivity.this.finish();


}
        }); 
    }
        
        public void onActivityResult(int requestCode,int resultCode,Intent date){
            switch(resultCode){
            case RESULT_OK:
             Bundle bundle=date.getExtras();
             /*String xm=editText1.getText().toString().trim();  //获得姓名  trim是取出字符前面的空格
     String ah=editText2.getText().toString().trim();  //获得爱好
     String tc=editText3.getText().toString().trim();  //获取特长
     editText1=(EditText) findViewById(R.id.editText1);  //特长
             editText2=(EditText) findViewById(R.id.editText2);  //爱好
             editText3=(EditText) findViewById(R.id.editText3);  //特长
             editText1.setText(xm);
             editText2.setText(ah);
             editText3.setText(tc);*/
            
             String xm=textView01.getText().toString();
             textView01=(TextView) findViewById(R.id.textView1);
             textView01.setText(xm);
            
             break;
        }
    }
}
    另一个是:package com.example.logon07111030;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;public class Second extends Activity {

Button button1;
EditText editText1,editText2;

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);
        
        button1=(Button) findViewById(R.id.button1);
        editText1=(EditText) findViewById(R.id.editText1);
        editText2=(EditText) findViewById(R.id.editText2);
        
        button1.setOnClickListener(new OnClickListener(){ public void onClick(View v) {
// TODO Auto-generated method stub

String zhanghu=editText1.getText().toString().intern();//获得账户
String mima=editText2.getText().toString().intern();//获得密码

Intent intent=new Intent();
intent.setClass(Second.this,MainActivity.class);

Bundle bundle=new Bundle(); //创建bundle
bundle.putString("zhanghu", zhanghu); //加入信息
bundle.putString("mima", mima);

intent.putExtras(bundle); //绑定信息
startActivity(intent); //启动Activity
Second.this.finish(); //关闭Activity



}
        
        });
        
        
         }}
问题是我的第一个页面获取不到第二个页面返回的信息,有时候,我改一下代码,整个程序就崩溃:如何给能把第二个页面的数据返回在第一个页面,高手请指点!    
      

解决方案 »

  1.   

    Intent intent=new Intent();
    intent.setClass(MainActivity.this, Second.class);
    startActivity(intent);
    MainActivity.this.finish();
    在第一个Activity中启动第二个Activity 时 用 startActivityforResult(intent,100);在第二个 结束时 setResult(101)然后放入数据 最后直接 finish()就好了;然后在 public void onActivityResult(int requestCode,int resultCode,Intent date){
      
        if(requestCode == 100){
             if(resultCode == 101){
              //做想做的事.....
             }
          }}
    有点乱希望能帮到你
      

  2.   

    我把第一个Activity的代码给成这样:        button01.setOnClickListener(new OnClickListener(){  //按钮接口监听器 public void onClick(View v) {
    // TODO Auto-generated method stub

    Intent intent=new Intent();
    intent.setClass(MainActivity.this, Second.class);
    startActivity(intent);
    startActivityforResult(intent,100); MainActivity.this.finish();


    }
            }); 
        }
            
            protected void startActivityforResult(Intent intent, int i) {

             String xm=textView01.getText().toString();
             textView01=(TextView) findViewById(R.id.textView1);
             textView01.setText(xm);
            
            
    }第二个改成:
     button1.setOnClickListener(new OnClickListener(){ public void onClick(View v) {
    // TODO Auto-generated method stub

    String zhanghu=editText1.getText().toString().intern();//获得账户
    String mima=editText2.getText().toString().intern();//获得密码

    Intent intent=new Intent();
    intent.setClass(Second.this,MainActivity.class);

    Bundle bundle=new Bundle(); //创建bundle
    bundle.putString("zhanghu", zhanghu); //加入信息
    bundle.putString("mima", mima);

    intent.putExtras(bundle); //绑定信息
    startActivity(intent); //启动Activity
    setResult(101);
    //Second.this.finish(); //关闭Activity
    finish();


    }
            
            });
            
            
             }结果,运行到第二个Activity时就崩溃了!什么原因呢?
      

  3.   

    代码的写得还是有问题,应该仔细看1楼的回复
    MainActivity类:Intent intent=new Intent();
     intent.setClass(MainActivity.this, Second.class);
     startActivity(intent);
     startActivityforResult(intent,100);
    MainActivity.this.finish();
    应该改为:Intent intent=new Intent();
     intent.setClass(MainActivity.this, Second.class);
     startActivityforResult(intent,100);/code]
    Second类:
    [code=Java]
    intent.putExtras(bundle); //绑定信息
     setResult(101, intent);
    finish();
      

  4.   


    有内容丢失,重新发一下:代码的写得还是有问题,应该仔细看1楼的回复
    MainActivity类:
    Intent intent=new Intent();
     intent.setClass(MainActivity.this, Second.class);
     startActivity(intent);
     startActivityforResult(intent,100);
    MainActivity.this.finish();
    应该改为:
    Intent intent=new Intent();
     intent.setClass(MainActivity.this, Second.class);
     startActivityforResult(intent,100);Second类:
    intent.putExtras(bundle); //绑定信息
     startActivity(intent); //启动Activity
     setResult(101);
     //Second.this.finish(); //关闭Activity
     finish();
    应该改为:
    intent.putExtras(bundle); //绑定信息
     setResult(101, intent);
    finish();
      

  5.   

    你妹的,没有修改贴子的权限;
    setResult(100, intent);
      

  6.   

    把startActivity(intent);
    改为 startActivityForResult(intent, 0);//2个activity相互传值要用这个方法