一天的内容:

1、include:再一个布局文件中引用另一个布局文件

2、在Android项目中如何创建一个Activity

(1)必须继承自Activity类

(2)重写onCreate方法,通过setContentView加载显示的布局文件

(3)在AndroidManifest.xml文件中配置Activity

        android:name 对应的是Activity类

        android:label 对应的事标题

        android:screenOrientation 当前页面是那种方式显示。用横屏还是竖屏。 默认根据手机自动识别。

        android:screenOrientation=landscape表示强制横屏。

        所有Activity都必须在application下配置,有且只有一个Activity包含intent-filter:

        
        为main通常欢迎页面为运行的入口。

(4)Activity之间的跳转。

(5)Activity返回数据。

(6)使用AlertDialog显示自定义布局对话框。



一、Activity

页面间的跳转。

通过include<减少重写代码的次数

如果多个Activity中出现相同的内容,可以把相同的内容单独放在一个布局文件中,在通过把布局文件引入到当前页面。对控件的使用方式不变。


上午第一个任务实现Activity的跳转


Activity之间如何跳转

    (1)登录成功后跳转到主页面,在主页面中显示登录人的信息

    (2)Startintent()用于页面间的跳转

    (3)Android内有一个ActivityStack。用于页面间的跳转。

    (4)调用finish()时,Activity相当于自杀,便调用不了之后的Activity。点击手机的“退出”键相当于把ActivityStack内的内容全部销毁。


附:实际开发的时候尽量少使用l、1、O、0。

l用于命名中

1用于下划线后


Activity跳转的步骤:

创建一个Intent,创建的同时指明跳转的从哪开始,跳转到那个类中。

      Intent intent=new Intent(当前Activity的对象,目标Activity的类型);

Intent intent=new Intent(LoginActivity.this,MainActivity.class);
从LoginActivity跳转到MainActivity。

通过startActivity的方法启动意图。

startActivity(intent);
如果当前Activity不需要在显示,可以调用finish()方法结束当前的Activity。
finish();


如何从一个Activity返回另一个Activity

(1)第一个Activity不能finish()

(2)第二个Activity只需要自己执行finish()即可。


Activity之间传递数据

(1)通过intent实现数据的传递,这是标准方式。一般都会使用集合来存储数据。Map集合传递数据。

        第一个Activity

            创建一个Intent对象,通过Intent中的putExtra方法绑定数据。添加要传递的数据。启动意图。

        第二个Activity

            通过getIntent方法获取传递的意图,再通过Intent的getXxxExtra方法获取指定key对应的数据。

            通过putExtra放入的类型,就要通过哪种类型获取。
例如:

public void onClick(View v) {String name=editusername.getText().toString();Intent intent=new Intent(LoginActivity.this,MainActivity.class);intent.putExtra("user_name", name);intent.putExtra("sex", "男");startActivity(intent);}private void findView() 
{        this.btnBack=(Button) findViewById(R.id.main_btn_back);        this.textmsg=(TextView) findViewById(R.id.main_text_msg);        this.textmsg.setText(msg);Intent intent=getIntent();    //获取传递的意图String msg=intent.getStringExtra("user_name");this.textmsg.setText(msg);
}

(2)通过静态变量实现数据的传递。如果使用过多会造成内存不足,故不建议采用。

先创建一个类,其中创建一个静态变量用于保存数据。缺点:占用内存过高。

package com.neu.util;import java.util.HashMap;import java.util.Map;public class Dateutil {    public static Map map=new HashMap();}public void onClick(View v) {String name=editusername.getText().toString();Dateutil.map.put("username", name);}private void findView() {this.btnBack=(Button) findViewById(R.id.main_btn_back);this.textmsg=(TextView) findViewById(R.id.main_text_msg);String msg=Dateutil.map.get("username");this.textmsg.setText(msg);}


(3)通过文件的方式传递数据。

(4)通过数据库实现。

必须注意使用的id是否在当前的布局文件中

Activity返回数据:

startActivityForResult(intent,requestCode);

第二个参数表示请求码,用于区分各个请求

package com.example.demo_12_22_pm_back_result;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.widget.TextView;public class RegActivity extends Activity {private TextView textAddressValue;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_re);findView();setListener();}private void setListener() {this.textAddressValue.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(RegActivity.this,CitiesActivity.class);//startActivity(intent);startActivityForResult(intent, 110);}});}private void findView() {this.textAddressValue=(TextView) findViewById(R.id.reg_text_aaddress_value);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.re, menu);return true;}protected void onActivityResult(int requestCode, int resultCode, Intent data) {if(resultCode==200){switch(requestCode){case 110:String city=data.getStringExtra("city");textAddressValue.setText(city);break;default:break;}}}}


setResult(resultCode, data);
resultcode返回码,可根据返回码判断是否正确返回。data用于封装返回的数据,习惯上所有页面的返回码要一致。返回的时候不需要指定返回目标,从哪来默认回到哪里去。

此方法专门用于处理Acivity返回的结果。

requestcode表示请求码。

resultcode表示响应码。

data表示返回的数据。

package com.example.demo_12_22_pm_back_result;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.TextView;import android.widget.Toast;public class CitiesActivity extends Activity implements OnClickListener{private TextView textQingdao;private TextView textYantai;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_cities);findView();setListener();}private void setListener() {this.textQingdao.setOnClickListener(this);this.textYantai.setOnClickListener(this);}private void findView(){this.textQingdao=(TextView) findViewById(R.id.city_text_qingdao);this.textYantai=(TextView) findViewById(R.id.city_text_yantai);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.cities, menu);return true;}@Overridepublic void onClick(View v) {String city=null;switch(v.getId()){    case R.id.city_text_qingdao:    city="青岛";    break;    case R.id.city_text_yantai:    city="烟台";    break;default:break;}Toast.makeText(this, city, 1000).show();Intent intent=new Intent();intent.putExtra("city", city);setResult(200, intent);finish();}}

使用AlertDialog显示自定义布局对话框。

创建xml文件解析器

LayoutInflater inflater=LayoutInflater.from(MainActivity.this);

把布局文件解析为视图

View view=inflater.inflate(R.layout.login, null);

package com.example.demo_12_22_pm_alert;import java.lang.reflect.Field;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.EditText;import android.widget.ImageView;public class MainActivity extends Activity {private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState)         {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findView();setListener();}private void findView()         {this.imageView=(ImageView) findViewById(R.id.imageView1);}private void setListener()        {this.imageView.setOnClickListener(new View.OnClickListener()                 {@Overridepublic void onClick(View v)                         {LayoutInflater inflater=LayoutInflater.from(MainActivity.this);View view=inflater.inflate(R.layout.login, null);final EditText edItLoginName=(EditText) view.findViewById(R.id.login_edit_loginname);AlertDialog.Builder alert=new AlertDialog.Builder(MainActivity.this);alert.setTitle("请登录");alert.setCancelable(false);alert.setView(view);alert.setPositiveButton("登录", new DialogInterface.OnClickListener()                                 {@Overridepublic void onClick(DialogInterface dialog, int which)                                         {String name=edItLoginName.getText().toString();edItLoginName.setError("格式有误!");setShowing(dialog,false);System.out.println("========="+name);}});alert.setNegativeButton("取消", new DialogInterface.OnClickListener()                                 {@Overridepublic void onClick(DialogInterface dialog, int which)                                         {setShowing(dialog, true);}});alert.show();}});}private void setShowing(DialogInterface dialog,boolean flag)        {try                 {Field f=dialog.getClass().getSuperclass().getDeclaredField("mShowing");f.setAccessible(true);f.set(dialog, flag);}                 catch (Exception e)                 {e.printStackTrace();}}}


更多相关文章

  1. Android中的五大布局和logcat打印日志
  2. Android编译过程总结及android中各种img文件的作用以及系统启动
  3. Android 数据存储之 SQLit
  4. Android相对布局管理器RelativeLayout
  5. android开发小技巧(2)背景按钮等布局的好朋友shape应用
  6. Android数据存储(一)
  7. Android应用数据存储几种方式(1)

随机推荐

  1. Android中JNI程序的编写(zhuan)
  2. 使用libevent实现最简单的android http-s
  3. MediaRecorder流程分析
  4. Android 7.0 自动安装APK及拍照崩溃问题
  5. android中常用的方法备忘
  6. Android笔记1——Android SDK自带的工具
  7. Android(安卓)ListView 下拉刷新 上拉更
  8. Android(安卓)studio升级后ndk项目编译打
  9. Android 调用 Web Service
  10. android动画入门篇