[Android]屏幕跳转

在Android中,屏幕使用一个活动来实现,屏幕之间是相互独立的,屏幕之间的跳转关系 通过Intent来实现


1、没有返回值的跳转

AndroidManifest.xml

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.demo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
         <activity
            android:name="com.example.demo.MainActivity1"
            android:label="@string/app_name1" >
           
        </activity>
    </application>

这里定义了两个activity,但是只有一个activity有intent-filter,这里是因为程序只能由第一个activity来启动


两个main文件

比如我这里,第一个屏幕提供了一行文字显示和一个按钮,当点击按钮时,跳转到第二个屏幕:

 <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="49dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="Go" />
第二个屏幕则相对简单,只显示一些文字:

 <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Intent to this" />

.Java实现跳转

主要代码如下:

		Button bt = (Button)findViewById(R.id.button1);
		bt.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				Intent i = new Intent();
				i.setClass(MainActivity.this, MainActivity1.class);
				startActivity(i);	
				finish();
			}
			
		});

Intent的setClass接口有两个参数,第一个为当前屏幕,第二个为跳转后的屏幕的class

startActivity的参数为Intent,在这里调用finish()则表示跳转到第二个屏幕后,结束当前活动,如果未调用,第二个活动退出后,仍然会返回到第一个活动


带返回值的跳转
如果跳转后存在返回值,则需要使用startActivityForResult,比如第一个活动的代码可以修改为:

startActivityForResult(i, iRequestCode);	
iRequestCode为自定义的请求码,在接受响应的时候可以使用,下面为接收响应的代码:

protected void  onActivityResult (int requestCode, int resultCode, Intent data){
		if(iRequestCode != requestCode){
			return;
		}
		
		if(200 == resultCode){
			TextView txt = (TextView)findViewById(R.id.textView1);
			txt.setText(data.getAction());
		}
		
	}


只要实现onActivityResult(...)即可,比如这里先校验是否为自己发出去的请求的响应,然后通过Intent解析返回的信息,resultCode也为另一个活动返回,这里通常可以用作校验返回结果是否正确,我这里认为200为正确


第一个活动页启动第二个活动页和接收第二个活动页返回的信息,相应的,第二个活动页可以多第一个活动页做出一些响应:

主要代码有这些:

Intent i = new Intent();
i.setAction("Retcode:200 \t msg:Hu Hu Hu!" + "+" +iVal++);
setResult(200, i);
本质为调用setResult接口,将结果码和Intent的信息返回给第一个活动





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值