1、 android与js代码交互:
①.在android中调用js方法:
android中调用js方法为WebView.loadUrl(“javascript:function()”);但是这样调用不能去得js方法的返回值。
②.在js中调用android的方法:
在android中:WebView.addjavascriptinterface(new Object(){
//这里写方法
String username;
Public void setName(final String name){
username=name;
}
},”demo”);//demo为这个接口的名字,可以任意命名
在js中:window.demo.setName(“zhangshan”);//这里调用时接口名称必须和android端声明的名字一致。
③.在android中取得js方法的返回值:
直接用Webview.loadUrl(“javascript:function()”);无法获得js中的返回值,所以要取得js方法的返回值,先在andoird端声明变量,然后在js方法中调用android方法给这个变量赋值,这样当android调用这个js时,js就给android端的变量赋值了,这个变量可以是js方法返回值。
2、 android存取简单值的方法SharedPreferences:
存取简单的值,比如说一个用户名和密码,可以用SharedPreference实现。
存入值步骤:
首先获得Context对象:Context context=ActivityName.this;
获得SharedPreferences对象:
SharedPreferences pref=context.getSharedPreferences(“prefname”, MODE_PRIVATE);
获得Editor对象:Editor editor=prefname.edit();
存入键值对:editor.putString(“name”,”zhangsan”);
提交:editor.commit();
取得值步骤:
Context context=ActivityName.this;
SharedPreferences pref=context.getSharedPreferences(“prefname”, MODE_PRIVATE);
String username=pref.getString(“name”,””);
3.Activity之间的跳转和广播实现结束别的Activity功能:
Activity跳转到别的Activity使用intent实现:
Intent intent=new Intent(Activity.this,otherActivity.class);
startActivity(intent);
如果传递参数跳转:
Bundle bundle=new Bundle();
bundle.putString(“name”,”zhangshan”);
bundle.putInt(“count”,5);
Intent intent=new Intent(Activity.this,otherActivity.class);
Intent.putExtras(bundle);
startActivity(intent);
Activity.this.finish();//结束次Activity
如果在AActivity中随意关闭BActivity:
在AActivity中注册广播:
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {//定义广播,用以在AccountActivity中调用来动态结束ms02Activity
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
finish();
}
};
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.MAIN");
registerReceiver(broadcastReceiver, intentFilter);
}
在BActivity中调用:
sendBroadcast(new Intent(“android.intent.action.MAIN”));
4.android中sqlite数据库的使用:
首先定义DbHelper类:用于创建表:
public class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE ms_account (_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , account VARCHAR, password VARCHAR)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
在应用sqlite的Activity中:
// SQLiteDatabase对象
SQLiteDatabase db;
// 数据库名
public String db_name = "ms02.sqlite";
// 表名
public String table_name = "ms_account";
// 辅助类名
final DbHelper helper = new DbHelper(this, db_name, null, 1);
db=helper.getWritableDatabase();
对数据库的写入:
SQLiteDatabase db;
ContentValues cv=new ContentValues();
cv.put(“account”,”zhangshan”);
db.insert(tablename,””,cv);
删除数据:
SQLiteDatabase db;
Db.delete(“表名”,“字段=?”,字段值,null);
查询数据:
SQLiteDatabase db;
Cursor c=db.query(“表名”,new String[]{“字段”,“字段1”},“字段=?”,new String[]{字段的值},null,null,null);
While(c.movetonext()){
String s=c.getString(c.getcolumnindex(“字段1”));
}
更新数据:
ContentValues cv=new ContentValues();
cv.put(“字段”,“字段值”);
cv.put(“字段1”,“字段值“);
db.update(“表名”,cv,”字段=“,”字段值”,null)
5.listview中item用textview实现:
在layout中添加listitem.xml文件:文件内容为添加一个checkbox和一个textview。
在Activity中自定义适配器继承basaAdapte:
// 自定义ListView适配器
class MyListAdapter extends BaseAdapter {
List<Boolean> mChecked;
ArrayList arraylist;
HashMap<Integer, View> map = new HashMap<Integer, View>();
public MyListAdapter(ArrayList list) {
arraylist = new ArrayList();
arraylist = list;
mChecked = new ArrayList<Boolean>();
for (int i = 0; i < list.size(); i++) {
mChecked.add(false);
}
}
@Override
public int getCount() {
return arraylist.size();
}
@Override
public Object getItem(int position) {
return arraylist.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
ViewHolder holder = null;
if (map.get(position) == null) {
// Log.e("MainActivity", "position1 = " + position);
LayoutInflater mInflater = (LayoutInflater) getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = mInflater.inflate(R.layout.listitem, null);
holder = new ViewHolder();
holder.selected = (CheckBox) view
.findViewById(R.id.list_select);
holder.name = (TextView) view.findViewById(R.id.list_name);
final int p = position;
map.put(position, view);
holder.selected.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
mChecked.set(p, cb.isChecked());
}
});
view.setTag(holder);
} else {
Log.e("MainActivity", "position2 = " + position);
view = map.get(position);
holder = (ViewHolder) view.getTag();
}
holder.selected.setChecked(mChecked.get(position));
holder.name.setText(arraylist.get(position).toString());
return view;
}
}
static class ViewHolder {
CheckBox selected;
TextView name;
}
6.动态添加布局文件:
声明layoutinflater类:
LayoutInflater inflater=(LayoutInflater)Activity.this.getSystemService(Content.Layout.inflater.services);
获取layout中的xml布局文件item:
Linearlayout layout=(Linearlayout)inflater.inflater(R.layout.xxxxx,null);
获取布局文件item中的控件:
Edittext ed=(Edittext)layout.findViewbyId(R.id.xxxxxx);
把获取到的布局文件添加到对话框中:
AlertDialog.Buidler b=new Builder(Activity.this);
b.setview(layout);
7对话框与Toast共存问题:
先定义这个方法,然后在对话框中弹出Toast时,掉用这个方法,使这个方法保持窗口不关闭,要关闭时也要调用。
// 手动设置dialog是否可以关闭
private void holdDialog(DialogInterface dialog, boolean flag) {
try {
Field field = dialog.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, flag);
} catch (Exception e) {
e.printStackTrace();
}
}
调用:holdDialog(dialog true);
holdDialog(dialog false);
8.对话框的使用:
对话框定义和调用分为动态生成和预定义:动态生产就是使用的时候动态临时生存dialog不用事先声明方法,预定义,必须先重写dialog的oncreatedialog方法。
预定义:
重写dialog的oncreatedialog(int id)方法:
在里面调用AlertDialog.builder b=new builder(Acitivity.this);
生成对话框,然后添加对话框的内容等。
调用对话框的时候可以通过id调用不同的对话框:showdialog(int id);
动态生成:直接在调用的时候编写:
AlertDialog.builder b=new builder(Activity.this);
生成对话框,然后添加对话框内容等等。
分享到:
相关推荐
这篇博客文章“android总结之TabHost”深入探讨了如何在Android应用中使用TabHost进行界面设计。TabHost提供了在同一个屏幕上展示多个功能区域的能力,使得用户可以方便地切换不同内容。 首先,我们需要理解TabHost...
这份"android总结.rar"压缩包文件似乎包含了Android开发的全面知识,包括基础组件的使用、性能优化策略以及即时聊天应用的开发教程。 1. **Android基本组件**: Android应用主要由四大组件构成:Activity(活动)、...
【Android总结】 在Android开发领域,深入理解和熟练运用各种工具是至关重要的。这篇总结将主要围绕Android开发中的源码分析和IDE工具的下载与配置展开,帮助开发者提升工作效率。 一、源码分析 源码分析是提升...
### 学习Android总结 #### 一、初步接触与学习路径 在初步接触Android时,首先感受到的是其独特的魅力和实用性。与Web开发相比,Android界面设计不仅具有丰富的视觉效果,而且在架构上也十分相似,这使得具备一定...
【Android 开发总结】 在 Android 开发中,个人经验总结主要涵盖了项目构建、MVP 架构模式、MD5.0 设计规范、Lambda 表达式以及网络请求框架的选择和使用。首先,创建 Android 项目时,通常会设置最大堆内存大小,...
Android面试资料 搭配网上大厂的面试题列表 对热修复和插件化的理解 我们知道Java虚拟机—— JVM 是加载类的class文件的,而Android虚拟机——Dalvik/ART VM 是加载类的dex文件,而他们加载类的时候都需要...
总结,`TabWidget`是Android中实现标签页切换的基础组件,通过自定义和与`ViewPager`的配合,可以构建出丰富多样的界面效果。在实际开发中,开发者可以根据需求灵活运用这些技术,以提供更好的用户体验。
本人有4年的Android开发经验 这个本人对此总结的 希望能帮助大家
本总结项目涵盖了多个关键知识点,包括`PopupWindow`、对话框、元素切换场景动画、图片打点技术、React Native(RN)与Android的交互,以及美团界面的实现。下面将对这些主题进行详细解释。 1. `PopupWindow`: `...
前言: 最近公司的App为了加快...本篇主要介绍WebView与Javascript交互数据,关于如何将H5网页呈现在WebView上可以参考这篇博客文章:Android总结之WebView使用总结。 WebView与Javascript交互: WebView与Javascr
1、 高通平台android开发总结. 7 1.1 搭建高通平台环境开发环境. 7 1.2 搭建高通平台环境开发环境. 7 1.2.1 高通android智能平台概述. 7 1.2.1.1 什么是L4,REX,BREW,AMSS以及相互之间的关系. 7 1.2.2 选择合适的源...
Android知识系统总结是一个涵盖广泛的主题,它涉及到Android操作系统的核心概念、开发环境的搭建、应用程序的结构、用户界面设计、数据存储、网络通信、多线程处理、性能优化等多个方面。以下是对这些关键知识点的...