• .Net程序猿玩转Android开发---(11)页面跳转


           在不论什么程序开发中,都会遇到页面之间跳转的情况,Android开发也不例外.这一节,我们来认识下Android项目中如何进行页面跳转.页面跳转分为有參数和无參数页面跳转,已经接受还有一个页面的返回值等。Android中页面跳转经常使用到的是Intent ,可是Intent不仅用做页面跳转,还能够做其它事情,比如拨打电话,发送短信,调用其它程序等。这节我们主要认识下如何通过Intent进行页面跳转.

              1.页面跳转

                              我们首先简单认识下Intent,Intent有有几个重载构造函数。我们使用当中一个构造函数进行页面跳转。

                               Intent intent = new Intent(MainActivity.this,SecondActivity.class);  有两个參数。第一个參数代表当前页面对象,第二个參数代表要跳转到的目标对象。

                             创建完Intent后,我们使用startActivity进行启动。、

                             以下我们看下这个效果

                             启动页面

                             

                        

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
    
        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="74dp"
            android:text="跳转到下一个页面" />
    
    </RelativeLayout>


     

    package com.example.hellotest;
    
    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;
    
    public class MainActivity extends Activity {
    
    	
    	private Button btn;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            btn=(Button)findViewById(R.id.button1);
            btn.setOnClickListener(new OnClickListener() //绑定注冊button单击事件   
                   {  
                @Override  
                public void onClick(View arg0) {  
                         // button跳转   
                          Intent intent = new Intent(MainActivity.this,SecondActivity.class);  
              
                          startActivity(intent);  
                  }  
                    
                    
            });  
    
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
        
    }
    


                            目标页面

                             

    <?

    xml version="1.0" encoding="utf-8"?

    > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="219dp" android:layout_height="wrap_content" android:layout_weight="0.19" android:text="第二个页面" /> </LinearLayout>


     

              2.带參数页面跳转

                                 这个演示样例,我们来看下页面跳转并传值,首先A页面跳转到B页面,并传递值,然后B页面返回A页面。同一时候向A页面传递值。

    效果图例如以下:

                         

                          发送内容到B页面

                        

                       点击返回到A页面。并把页面输入内容传递到A页面

                      

                     A页面布局和代码

                     

    <?xml version="1.0" encoding="utf-8"?

    > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:layout_width="fill_parent" android:layout_weight="0.9" android:layout_height="fill_parent">    </LinearLayout>    <LinearLayout android:layout_width="fill_parent" android:layout_weight="0.1" android:orientation="vertical" android:layout_height="fill_parent">   <LinearLayout android:layout_marginLeft="10px" android:layout_marginRight="10px" android:gravity="center" android:layout_width="fill_parent" android:orientation="horizontal" android:layout_height="wrap_content">    <TextView android:textSize="8pt" android:text="发送内容:" android:id="@+id/tvSend" android:layout_weight="0.7" android:layout_width="fill_parent" android:layout_height="wrap_content">       </TextView>       <EditText android:layout_weight="0.3" android:layout_width="fill_parent" android:text="" android:id="@+id/etmsg" android:layout_height="wrap_content">       </EditText>    </LinearLayout>    <LinearLayout android:layout_marginLeft="10px" android:layout_marginRight="10px" android:gravity="center" android:layout_width="fill_parent" android:orientation="horizontal" android:layout_height="wrap_content">    <Button android:text="发送" android:textSize="9pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/btnSend" > </Button>    </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_weight="0.9" android:layout_height="fill_parent">    <TextView android:textSize="8pt" android:text="接受返回内容:" android:id="@+id/tvreturn" android:layout_weight="0.7" android:layout_width="fill_parent" android:layout_height="wrap_content">       </TextView> </LinearLayout>     </LinearLayout> </LinearLayout>


     

    package com.example.hellotest;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class OrginLayOut  extends Activity {
    	
    	private Button btn;//发送button
    	private EditText edtiText;//发送内容
    	private TextView tvReturn;//接受子页面返回显示的内容
    	  protected void onCreate(Bundle savedInstanceState) {
    	        super.onCreate(savedInstanceState);
    	        setContentView(R.layout.orginlayout);
    	        
    	        btn=(Button)findViewById(R.id.btnSend);//获取button对象
    	        edtiText=(EditText)findViewById(R.id.etmsg);//获取文本框对象
    	        tvReturn=(TextView)findViewById(R.id.tvreturn);
    	        
    	        btn.setOnClickListener(new OnClickListener() //绑定注冊button单击事件   
    	               {  
    	            @Override  
    	            public void onClick(View arg0) {  
    	                     // button跳转   
    	                 Intent intent = new Intent(); 
    	                  intent.setClass(OrginLayOut.this, TargetActivity.class);
    	            	 Bundle bundle = new Bundle();
    	                 bundle.putString("msg",edtiText.getText().toString());//传值
    	                 intent.putExtras(bundle);
    	                // startActivity(intent);
    	                 startActivityForResult(intent, 0);
    
    	              }  
    	                
    	                
    	        });  
    	    }
    
    	  //接受页面的返回值
    	  @Override//requestCode请求标识   //resultCode 返回标识
    	    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	        if(requestCode == 0) {
    	            if(resultCode == Activity.RESULT_OK) {
    	               String content=data.getStringExtra("returnmsg");
    	            	tvReturn.setText("接受返回内容:"+content);
    	            }
    	        }
    	  }
    }
    


                B页面布局和代码

                

    <?

    xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:layout_width="fill_parent" android:layout_weight="0.9" android:layout_height="fill_parent">    </LinearLayout>    <LinearLayout android:layout_width="fill_parent" android:layout_weight="0.1" android:orientation="vertical" android:layout_height="fill_parent">  <LinearLayout android:layout_marginLeft="10px" android:layout_marginRight="10px" android:gravity="center" android:layout_width="fill_parent" android:orientation="horizontal" android:layout_height="wrap_content"> <TextView android:textSize="8pt" android:text="接受内容:" android:id="@+id/tvreceivemsg" android:layout_weight="0.7" android:layout_width="fill_parent" android:layout_height="wrap_content"> </TextView> </LinearLayout>   <LinearLayout android:layout_marginLeft="10px" android:layout_marginRight="10px" android:gravity="center" android:layout_width="fill_parent" android:orientation="horizontal" android:layout_height="wrap_content">    <TextView android:textSize="8pt" android:text="返回内容:" android:layout_weight="0.7" android:layout_width="fill_parent" android:layout_height="wrap_content">       </TextView>       <EditText android:layout_weight="0.3" android:layout_width="fill_parent" android:text="" android:id="@+id/etreturnmsg" android:layout_height="wrap_content">       </EditText>    </LinearLayout>    <LinearLayout android:layout_marginLeft="10px" android:layout_marginRight="10px" android:gravity="center" android:layout_width="fill_parent" android:orientation="horizontal" android:layout_height="wrap_content">    <Button android:text="返回" android:textSize="9pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/btnreturn" > </Button>    </LinearLayout>     </LinearLayout> </LinearLayout>


     

    package com.example.hellotest;
    
    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;
    import android.widget.TextView;
    
    public class TargetActivity extends Activity {
    
    	 private TextView tv;
    	 private Button btn;
    	 private EditText returnText;
    	 protected void onCreate(Bundle savedInstanceState) {
    	        super.onCreate(savedInstanceState);
    	        setContentView(R.layout.targetlayout);
    	        tv=(TextView)findViewById(R.id.tvreceivemsg);
    	        btn=(Button)findViewById(R.id.btnreturn);//获取button对象
    	        returnText=(EditText)findViewById(R.id.etreturnmsg);//获取文本框对象
    	        
    	        Bundle bunde = this.getIntent().getExtras();
    	        String strs="接受内容:"+bunde.getString("msg").toString();
    	        tv.setText(strs);
    	        
    	        btn.setOnClickListener(new OnClickListener() //绑定注冊button单击事件   
                {  
             @Override  
             public void onClick(View arg0) {  
                      // button跳转   
                  Intent  data= new Intent(); 
                  data.putExtra("returnmsg",returnText.getText().toString());
                  setResult(Activity.RESULT_OK,data);
                  finish();
    
               }  
                 
                 
         });  
    	    }
    }
    

                                 这里有几个方法我们简单说明下:
                                 startActivityForResult 假设父页面想接受子页面的返回值,使用这种方法启动子页面。方法第一个參数代表启动的子页面信息。第二个參数代表请求码,

               是整数类型。 请求码requestCode的意思是假设一个子页面有多个父页面能够启动,通过请求码能够推断来自哪个父页面。

                               onActivityResult(int requestCode, int resultCode, Intent data) 用来接收父页面返回的内容的方法,第一个參数是请求码,第二个參数是返回结果标识resultCode, resultCode主要用来推断哪个子页面返回。 第三个參数就是返回数据

                               setResult(Activity.RESULT_OK,data); 这种方法主要用于子页面。第一个參数是返回标识,第二个參数是返回数据

                       下载:http://download.csdn.net/detail/zx13525079024/8136253

                      

  • 相关阅读:
    Databases Questions & Answers
    SQL语句
    常见的数据库基础面试题大全
    关于GET POST
    经常遇到的浏览器兼容性问题
    关于JavaScript中apply与call的用法意义及区别(转)
    js闭包的用途
    深入理解js闭包
    undefined与null的区别
    HeapSort快速排序
  • 原文地址:https://www.cnblogs.com/lytwajue/p/6719066.html
Copyright © 2020-2023  润新知