`
uule
  • 浏览: 6338113 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

Activity中的跳转

 
阅读更多

一个activity 一个布局文件 不能跨越。
如果你需要使用main2.xml 需要另建activity

需要返回数据或结果的,则使用startActivityForResult (Intent intent, int requestCode),requestCode的值是自定义的,用于识别跳转的目标Activity。跳转的目标Activity所要做的就是返回数据/结果
setResult(int resultCode)只返回结果不带数据
setResult(int resultCode, Intent data)两者都返回!

而接收返回的数据/结果的处理函数是onActivityResult(int requestCode, int resultCode, Intent data),这里的requestCode就是startActivityForResult的requestCode,resultCode就是setResult里面的resultCode ,返回的数据在data里面。

注意,在setResult后,要调用finish()销毁当前的Activity,否则无法返回到原来的Activity ,就无法执行原来Activity的onActivityResult函数,看到当前的Activity没反应。

RESULT_OK和RESULT_CANCELED是系统空间里面的常量,不需要自定义,直接使用就行

另外在运行过程中,发现按Back键后,是可以返回RESULT_CANCELED的,看了SDK doc后,原来真的是那样,而且不带有数据的。这意味着,如果你设想在返回RESULT_CANCELED时并返回数据,那么需要截获Back键的事件处理,把原来返回RESULT_CANCELED的核心逻辑copy到事件处理里面。

 

public class MainActivity extends Activity {
	
	static final int CALL_MSG_REQUEST = 0;
	static final int CALL_BACK_REQUEST = 1;
		
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if(requestCode == CALL_MSG_REQUEST){
			if(resultCode == RESULT_OK){
				Bundle bd = data.getExtras();
				String name = bd.getString("name2");
				Double salary = bd.getDouble("salary2");
				TextView txt = (TextView)findViewById(R.id.txtMsg);
				txt.setText("Activity 1" + "\n名字:" + name + "\n薪水:" + String.valueOf(salary));				
			}else if (resultCode == RESULT_CANCELED) {
				Toast.makeText(this, "Send canceled!", Toast.LENGTH_SHORT).show();
			}
		}else if(requestCode == CALL_BACK_REQUEST){
			
		}
		
	}
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		TextView v = (TextView)findViewById(R.id.txtMsg);
		v.setText("初始Text");
		
		Button btn = (Button)findViewById(R.id.btn1);
		btn.setText("启动另一个Activity");
		btn.setOnClickListener(new Button.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent ten = new Intent();
				ten.setClass(MainActivity.this, SkipActivity.class);
				
				Bundle bubb = new Bundle();
				bubb.putString("name", "ROBBY");
				bubb.putDouble("salary", 100d);
				
				ten.putExtras(bubb);
				//startActivity(ten);
				startActivityForResult(ten, CALL_MSG_REQUEST);
			}
		});
          }

}

其实用startActivity(ten);可以返回,不过返回没带参数而已! 

 

public class SkipActivity extends Activity {

	Intent ten = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_skip);
        ten = this.getIntent();
		Bundle bd = ten.getExtras();
		String name = bd.getString("name");
		Double salary = bd.getDouble("salary");
		
		TextView txt = (TextView) this.findViewById(R.id.textSkip);
        txt.setText("Activity 2" + "\n名字:" + name + "\n薪水:" + String.valueOf(salary));
        
        Button btn = (Button) this.findViewById(R.id.btn2);
        btn.setText("返回前一个Activity");
        btn.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
                // 返回参数给启动者               
               /*Bundle bd = ten.getExtras();
               bd.putString("name2", "Robby2");
               bd.putDouble("salary2", 120d);
               ten.putExtras(bd);
               SkipActivity.this.setResult(RESULT_OK, ten);
               */
               Intent t = new Intent();
               Bundle bd = new Bundle();
               bd.putString("name2", "Robby2");
               bd.putDouble("salary2", 120d);
               t.putExtras(bd);
               SkipActivity.this.setResult(RESULT_OK, t);
               //移上两种情况都可
               
               SkipActivity.this.finish();
            }
        });
    }

}

 activity_main.xml:

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:id="@+id/layout">
        
    <TextView android:id="@+id/txtMsg" android:layout_width="wrap_content"
        android:layout_height="wrap_content"></TextView>
     <Button android:id="@+id/btn1" android:layout_width="wrap_content"
        android:layout_height="wrap_content"></Button>    
      
</LinearLayout>

 

activity_skip.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textSkip" />

     <Button android:id="@+id/btn2" android:layout_width="wrap_content"
        android:layout_height="wrap_content"></Button>    
</LinearLayout>

 

 

参考:

http://bbs.e800.com.cn/thread-4955-1-1.html

http://my.oschina.net/huangsm/blog/32035

http://blog.csdn.net/lixiang0522/article/details/7824490

 

本来看起来挺简单,结果自己实际操作起来,问题百出,典型的眼高手低啊,悲催

 

 

 

 

 

 

 

  • 大小: 111.5 KB
分享到:
评论

相关推荐

    安卓启动时快速跳转到指定activity

    在Android开发中,启动应用程序并快速跳转到指定的Activity是一项常见的需求,特别是在实现自定义启动页或者处理特定启动逻辑时。本知识点将详细讲解如何在Android应用启动时实现这一功能。 首先,我们需要理解...

    ViewPager加载Activity

    在这个方法中,我们可以通过调用`startActivityForResult()`启动新的Activity,并在Activity的结果回调中处理滑动事件。 其次,为了使Activity能够像Fragment一样在ViewPager中滑动,我们需要处理Activity的布局和...

    android代码 Activity跳转

    总结,Activity跳转是Android开发中不可或缺的部分,理解Intent、启动模式以及返回结果的处理对于构建复杂的Android应用至关重要。通过熟练掌握这些知识点,开发者可以更自如地控制应用的导航流程,为用户提供更好的...

    Android 中从activity1跳转到activity2再回到activity所经历的生命周期

    ### Android 中从Activity1跳转到Activity2再回到Activity1所经历的生命周期 在Android开发过程中,理解Activity的生命周期对于管理界面状态、处理用户交互以及响应系统事件至关重要。本文将详细解析从一个Activity...

    实现Activity之间跳转

    Activity之间的跳转是Android应用中常见的操作,用于实现用户在不同界面间的导航。下面将详细介绍如何在Android中实现Activity之间的跳转,并探讨相关的知识点。 1. **Intent的使用** Intent是Android中实现组件间...

    android手机开发activity之间的跳转例子

    例子中可以从mainactivity跳转到next01activity、next02activity、next03activity、next04activity 也可以从next01activity、next02activity、next03activity、next04activity中跳转回到mainactivity

    Activity页面跳转特效

    在Android应用开发中,Activity页面跳转特效是一个增强用户体验的重要环节。通过巧妙地设计和实现这些特效,可以为用户带来更加生动和有趣的交互体验。在Android 5.0(Lollipop)及更高版本中,系统引入了Transition...

    Android源程序实现两个Activity之间的跳转

    本文详细介绍了如何在Android应用程序中实现两个`Activity`之间的跳转。通过创建`Intent`对象,并设置其要启动的目标`Activity`,再通过调用`startActivity()`方法,即可轻松实现`Activity`间的跳转。此外,还可以...

    Android Activity跳转和listview的使用

    理解Activity的跳转和ListView的使用是Android开发中至关重要的技能。在这个主题中,我们将深入探讨如何通过Intent和Bundle实现Activity间的参数传递和跳转,以及如何在ListView中设置Item的点击事件处理。 首先,...

    activity跳转后关闭父activity

    假如说有一个activity A,在A中跳转到Activity B, 然后在B中跳转到Activity C中,最后要在C中把activity A,B,C都关掉。  首先有一个Activity A,A中有一个Button,点击这个Button会跳到Activity B中去,但会拿到...

    Activity之间的跳转项目案例实现

    启动模式在Activity跳转中起着重要作用。Android提供四种默认的启动模式:标准模式(standard)、单实例模式(singleInstance)、单任务模式(singleTask)和单栈顶模式(singleTop)。标准模式是最常见的,每次启动...

    Android 实现两个Activity跳转实例

    在Android应用开发中,Activity是构成应用程序的...在进行Activity跳转时,应确保正确管理资源,尤其是涉及多媒体元素时,要防止资源冲突和异常情况的发生。通过合理的生命周期管理,可以保证应用的稳定性和用户体验。

    Android面试题-Activity A跳转Activity B,再按返回键,生命周期执行的顺序?

    Activity A跳转Activity B,再按返回键,A、B的生命周期执行顺序是什么? 当听到这个题目的时候,我得意地笑了笑,对于Activity的生命周期已经记熟的我,心想,为什么不直接问Activity的生命周期呢?于是想当然的说...

    android activity各种方式跳转 经典完整代码

    以上是Android中Activity跳转的主要方式,每个方法都有其特定的应用场景。在实际开发中,开发者应根据需求选择合适的方式进行Activity间的交互。通过理解并熟练掌握这些方法,你可以构建更加流畅、功能丰富的Android...

    四个Activity的跳转

    总结,"四个Activity的跳转"实例涵盖了Android开发中Activity间的基本交互,包括Intent的使用、Activity的启动和关闭,以及数据的传递和返回。对于初学者来说,这是一个很好的起点,有助于理解Android应用的基本架构...

    Activity跳转 四种跳转方式

    ### Activity跳转的四种方式详解 #### 一、标准模式(Standard) 标准模式是Activity的默认启动模式。当一个新的Activity启动时,系统会为它创建一个新的实例,并压入任务栈的顶部。在这种模式下,每次启动...

    android实现activity跳转

    在Activity跳转中,Intent起着至关重要的作用。 1. 创建Intent 在Java代码中,创建Intent对象通常有两种方式: ```java // 方式一:通过指定目标Activity的Class Intent intent = new Intent(this, TargetActivity....

    android activity之间跳转的示例程序

    为了返回上一个Activity,可以使用finish()方法关闭当前Activity,或者使用startActivityForResult()进行有结果的跳转,并在目标Activity中通过setResult()设置返回值,然后在源Activity的onActivityResult()方法中...

    多个Activity跳转的小结

    在Activity跳转中,Intent起着至关重要的作用。创建一个Intent对象并指定目标Activity的类名(ComponentName)或通过Intent过滤器(Action、Data、Category)来启动另一个Activity。 1. 显式Intent:通过...

    ActivityGroup之activity内跳转和外跳转

    Activity外跳转则是指从ActivityGroup中的子Activity跳转到不在该组内的其他Activity。在这种情况下,通常使用标准的`startActivity()`方法,但需要注意的是,由于子Activity是在ActivityGroup内部,所以需要额外的...

Global site tag (gtag.js) - Google Analytics