Android 创建简单交互页面

1. Activity 主要关注与视图窗体的创建(目前理解为网站的网页)。它具有生命周期的概念,onCreate,OnStart,OnRestart, OnResume,OnPause,OnStop,OnDestroy。随着 Activity 对用户的可见和不可见状态转变,onStart()和onStop()能被调用多次。

  • "显示生命周期" onStart <---> onStop之间,用户可以在屏幕上看到Activity,尽管可能不在前面(隐藏被透明的Activity覆盖等)与用户交互。在这个两个方法之间可以维护所需要的显示给用户的资源。
  • "前台生命周期" onResume <--->onPause之间,Activity显示在屏幕上,并且用户能与之交互。Activity会经常在恢复和暂停之间转换。例如,多米音乐播放时,在机器休眠->音乐暂停,唤醒则音乐继续。
  • 加载模式(launch mode):首先,Task是一组与用户交互并执行特定工作的 Activity (已被实例化)的集合。这些 Activity的"实例"都根据被启动的顺序排列在栈中。
    • standard模式:默认,Task 中可创建新的Activity实例,且这个Activity可以被实例化多次,task(多)-Activity实例(多);
    • singleTop模式:如果一个Activity实例已经存在与当前 task 顶部,则系统通过调用它的 onNewIntent 发送intent请求调用这个实例,而不是创建新的实例。task(多)-Activity实例(多)[note:与standard区别是虽然 task 可以有多个实例,但是在创建实例时,只有当栈的顶部不是这个Activity已经存在的实例,才可以,否则仅仅是调用];  
    • singleTask模式:简言之,即使不是 top,只要有task拥有这个实例,就不给任何task建立新的该Activity的实例。哪怕Activity启动了新的task,回退还是会回到前一个Activity。在同一时间,Activity的实例只有一个。
    • singeInstance模式:与singleTask模式效果一样,但是Activity实例只有一个并且它是Task的唯一成员。之后被该Activity启动的其它Activity都会在不同的Task中启动。
    • 注意:通过Intent中的flag,也可以打断默认的行为效果。设置intent 值为FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITYY_SINGLE_TOP, FLAG_ACTIVITY_CLEAR_TOP。

2. 配置改变:除非指定,否则如果设备的配置改变(定义在Resource.Configuration类中),任何在界面上的显示都需要更新以适应新的配置(屏幕方向、语言、输入设备)。默认销毁 Activity,并调用相应的 Activity 生命周期函数 onPause,onStop,onDestroy。如果希望绕过 Activity的重启来应对配置改变,则可在manifest文件中配置 android:configChanges 属性。任何在manifest中定义的配置类型,都会回调当前Activity的onConfigurationChanged(Configuration)方法,而不是重启Activity。

3. 启动Activity并得到结果:在Activity中,可以调用 startActivity(Intent)/startActivityForResult(Intent,int)[结果通过onActivityResult(int,int,Intent)拿到【在被调用方使用 setResult(Activity.RESULT_OK,data) ;//data.putExtra("huan", val); 传递给调用方】拿到Intent数据data后使用]方法来启用一个新的 Activity。



android.content.Intent.Intent(Context packageContext, Class<?> cls)

Create an intent for a specific component. All other fields (action, data, type, class) are null, though they can be modified later with explicit calls. This provides a convenient way to create an intent that is intended to execute a hard-coded class name, rather than relying on the system to find an appropriate class for you; see setComponent for more information on the repercussions of this.

Parameters:
packageContext A Context of the application package implementing this class.
cls The component class that is to be used for the intent.


例如:

1         mButton2.setOnClickListener(new OnClickListener(){
2          @Override
3          public void onClick(View v)
4          {
5           Intent _intent = new Intent(MainActivity.this, ActivityC.class);
6           startActivityForResult(_intent,100);
7           //第一个是intent对象,第二个是请求码,用来区分不同的请求
8          }
9         });
 1 public class ActivityC extends Activity {
 2     protected void onCreate(Bundle savedInstanceState) {
 3         super.onCreate(savedInstanceState);
 4         setContentView(R.layout.activityc);
 5
 6         Button button1 = (Button) findViewById(R.id.buttionc);
 7
 8         button1.setOnClickListener(new OnClickListener(){
 9             @Override
10             public void onClick(View v){
11                 Intent data = new Intent(); //可见,Intent有多种构造方式,既可以.putExtra 传递<key,value>值,也可以作为启动新的 Activity 的桥梁。
12                 EditText et = (EditText) findViewById(R.id.textActivityc);
13                 String val = et.getText().toString();
14                 data.putExtra("huan", val);
15                 setResult(Activity.RESULT_OK,data);
16                 finish();
17             }
18         });
19     }
20 }

4. 需要注意的是,启动不同Activity时候,需要对 requestCode进行各自的设定,这样在onActivityResult()才能拿到不同 Intent的内容,从而选取本页View做不同的处理。



void android.app.Activity.startActivityForResult(Intent intent, int requestCode) Same as calling startActivityForResult(Intent, int, Bundle) with no options.

Parameters:
intent The intent to start.
requestCode If >= 0, this code will be returned in onActivityResult() when the activity exits.

1         mButton1.setOnClickListener(new OnClickListener(){
2          @Override
3          public void onClick(View v)
4          {
5           Intent _intent = new Intent(MainActivity.this,ActivityB.class);
6           startActivityForResult(_intent,200);
7          }
8         });
 1     @Override
 2     protected void onActivityResult(int requestCode, int resultCode,Intent data){
 3         super.onActivityResult(requestCode, resultCode, data);
 4         if(requestCode == 100 && resultCode == Activity.RESULT_OK){
 5             String val = data.getExtras().getString("huan");
 6             TextView tv = (TextView) findViewById(R.id.tvDisplay);
 7             tv.setText("来自 ActitivityC 的值 :" + val);
 8         }
 9         if(requestCode == 200 && resultCode == Activity.RESULT_OK){
10             String val = data.getExtras().getString("xin");
11             TextView tv = (TextView) findViewById(R.id.tvDisplay);
12             tv.setText("来自 ActitivityB 的值 :" + val);
13         }
14         /*
15          * 本页面上拿到的 ActivityResult,不管是自哪个button跳转的,都需要根据各自新 Activity的requestCode来进行判断。
16          * 并没有区分不同Activity的同样的requestCode。
17          */
18
19     }

5. 所有的 Activity 都必须在 Androidmanifest.xml 文件中进行注册:<activity android:name=".ActivityC" />

 
时间: 2024-08-14 00:22:57

Android 创建简单交互页面的相关文章

android创建一个细节页面,以及argument的应用

大家好..以前我也好奇过有没有一些设计模式可以用来创建一个细节页面,直到最近我看了一些设计模式相关的博文和书后,我终于发现了以下的应用. 下面我们介绍一个Listview 点击后出现一个detail 页面的功能,功能简单,但是我们看的是思想. 首先我们实现自定义的ListView,ListItem 里面有一个TextView,一个EditText,一个Checkbox,对应存放数据的是一个Crime的类.ListView里面有好多个ListItem,而对应的是CrimeList 类,为了方便创建

android 开发 简单的页面布局

package com.example.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; impo

Android与Unity交互研究

Android与Unity交互研究 转载请注明出处:http://blog.csdn.net/crazy1235/article/details/46733221 Android与Unity交互研究 unity与android交互的由来 unity简单介绍 unity与android交互介绍 unity调用android的方法 android调用untiy的方法 unity与android交互的由来 本人在项目开发过程中,遇到这样一个需求,把unity的场景放到android中去显示.刚开始做的

Android程序中Web页面和NativeCode交互

首先应该在AndroidManifest.xml把下面这个加上使得具有网络访问权限 <uses-permission android:name="android.permission.INTERNET"/> 然后在布局文件上插入WebView main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http:/

android客户端和php服务简单交互

android客户端和php+mysql+apache搭建之间的简单交互,实现log信息存储. 实现原理就是android客户端发送请求,传给服务器log信息,服务器收到这些,连接数据库进行存储,并将存储后的状态返回给客户端. 服务器端: 先在mysql里面建一个testlog的数据库,里面有一个log_info表,记录了LogCategory,System,Executor,Action等信息. 在php的虚拟目录下新建一个php项目testlog,创建conn.php和log_deal.ph

Android简单登陆页面

布局: 线性布局+相对布局 日志打印: 利用LogCat和System.out.println打印观察. Onclick事件是采用过的第四种: 在配置文件中给Button添加点击时间 涉及知识: 通过上线文context获得文件的路径和缓存路径,保存文件 布局代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.an

Android -- 与WEB交互在同一个会话Session中通信

Session与Cookie Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力. Session可以用Cookie来实现,也可以用URL回写的机制来实现. Cookie和Session有以下明显的不同点: 1)Cookie将状态保存在客户端,Session将状态保存在服务器端: 2)Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器.网络服务器用HTTP头向客户端发送cookies,在客户

【转】Android Studio简单设置

原文网址:http://ask.android-studio.org/?/article/14 Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings --> Appearance --> Theme ,选择 Darcula 主题即可. 字体设置 系统字体设置 如果你的Android Studio界面中,中文显示有问题,或者选择中文目录显示有问题,或者想修改菜单栏的字体,可以这么设置.Settings -

Android NDK 简单介绍、工具安装、环境配置

NDK全称:Native Development Kit. 1.NDK是一系列工具的集合. * NDK提供了一系列的工具,帮助开发人员高速开发C(或C++)的动态库,并能自己主动将so和java应用一起打包成apk.这些工具对开发人员的帮助是巨大的. * NDK集成了交叉编译器,并提供了对应的mk文件隔离平台.CPU.API等差异,开发者仅仅须要简单改动mk文件(指出"哪些文件须要编译"."编译特性要求"等),就能够创建出so. * NDK能够自己主动地将so和Ja