生产实习(Android)四
2015-12-22 22:58
417 查看
一天的内容:
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:
(4)Activity之间的跳转。
(5)Activity返回数据。
(6)使用AlertDialog显示自定义布局对话框。
一、Activity
页面间的跳转。
通过include<减少重写代码的次数
如果多个Activity中出现相同的内容,可以把相同的内容单独放在一个布局文件中,在通过<include layout=""/>把布局文件引入到当前页面。对控件的使用方式不变。
上午第一个任务实现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的类型);
通过startActivity的方法启动意图。
如何从一个Activity返回另一个Activity
(1)第一个Activity不能finish()
(2)第二个Activity只需要自己执行finish()即可。
Activity之间传递数据
(1)通过intent实现数据的传递,这是标准方式。一般都会使用集合来存储数据。Map集合传递数据。
第一个Activity
创建一个Intent对象,通过Intent中的putExtra方法绑定数据。添加要传递的数据。启动意图。
第二个Activity
通过getIntent方法获取传递的意图,再通过Intent的getXxxExtra方法获取指定key对应的数据。
通过putExtra放入的类型,就要通过哪种类型获取。
例如:
(3)通过文件的方式传递数据。
(4)通过数据库实现。
必须注意使用的id是否在当前的布局文件中
Activity返回数据:
startActivityForResult(intent,requestCode);
第二个参数表示请求码,用于区分各个请求
setResult(resultCode, data);
resultcode返回码,可根据返回码判断是否正确返回。data用于封装返回的数据,习惯上所有页面的返回码要一致。返回的时候不需要指定返回目标,从哪来默认回到哪里去。
此方法专门用于处理Acivity返回的结果。
requestcode表示请求码。
resultcode表示响应码。
data表示返回的数据。
使用AlertDialog显示自定义布局对话框。
创建xml文件解析器
LayoutInflater inflater=LayoutInflater.from(MainActivity.this);
把布局文件解析为视图
View view=inflater.inflate(R.layout.login, null);
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:
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>为main通常欢迎页面为运行的入口。
(4)Activity之间的跳转。
(5)Activity返回数据。
(6)使用AlertDialog显示自定义布局对话框。
一、Activity
页面间的跳转。
通过include<减少重写代码的次数
如果多个Activity中出现相同的内容,可以把相同的内容单独放在一个布局文件中,在通过<include layout=""/>把布局文件引入到当前页面。对控件的使用方式不变。
上午第一个任务实现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);
}
</pre><p></p><p>(2)通过静态变量实现数据的传递。如果使用过多会造成内存不足,故不建议采用。</p><p>先创建一个类,其中创建一个静态变量用于保存数据。缺点:占用内存过高。</p><p></p><pre name="code" class="java">package com.neu.util; import java.util.HashMap; import java.util.Map; public class Dateutil { public static Map<String,String> map=new HashMap<String,String>(); } 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; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_re); findView(); setListener(); } private void setListener() { this.textAddressValue.setOnClickListener(new View.OnClickListener() { @Override public 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); } @Override public 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; @Override protected 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); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.cities, menu); return true; } @Override public 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; @Override protected 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() { @Override public 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() { @Override public 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() { @Override public 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(); } } }
相关文章推荐
- Android动画(3)--属性动画
- Android中使用Handler造成内存泄露的分析和解决
- Android监听软键盘弹出与收起
- 七牛---Android SDK进行代码混淆配置
- android studio使用
- Android动画(2)视图动画
- Android项目实战之战途牛
- Android内存溢出 (oom)实战
- android之旅3:内外部存储读写数据
- Android动画(1)--帧动画
- android解决方法数超过65536问题
- android activity生命周期
- 利用drozer进行Android渗透测试
- MVP模式在Android开发中的应用
- ListView中停靠(悬浮)效果
- android内存管理(三)
- MPAndroidchart 教程:图例 Legend(七)
- Android用surface直接显示yuv数据
- Android四大组件之Broadcast
- android listview 的监听事件