使用了sqlite 和adapter 的简单例子
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RelativeLayout android:id="@+id/RelativeLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<EditText android:id="@+id/name"
android:text=""
android:layout_width="280dip"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip" >
</EditText>
<TextView android:id="@+id/name_label"
android:text="姓名:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toRightOf="@id/name"
android:layout_alignBaseline="@+id/name">
</TextView>
<EditText android:id="@+id/age"
android:text=""
android:layout_width="280dip"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip"
android:layout_below="@id/name"
>
</EditText>
<TextView android:id="@+id/age_label"
android:text="班级:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toRightOf="@id/age"
android:layout_alignBaseline="@+id/age" >
</TextView>
<EditText android:id="@+id/height"
android:text=""
android:layout_width="280dip"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip"
android:layout_below="@id/age"
>
</EditText>
<TextView android:id="@+id/height_label"
android:text="学号:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toRightOf="@id/height"
android:layout_alignBaseline="@+id/height">
</TextView>
</RelativeLayout>
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button android:id="@+id/add"
android:text="添加数据"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding = "5dip"
android:layout_weight="1">
</Button>
<Button android:id="@+id/query_all"
android:text="全部显示"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding = "5dip"
android:layout_weight="1">
</Button>
<Button android:id="@+id/clear"
android:text="清除显示"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding = "5dip"
android:layout_weight="1">
</Button>
<Button android:id="@+id/delete_all"
android:text="全部删除"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding = "5dip"
android:layout_weight="1">
</Button>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayout03"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:text="ID:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding = "3dip">
</TextView>
<EditText android:id="@+id/id_entry"
android:layout_width="50dip"
android:layout_height="wrap_content"
android:padding = "3dip"
android:layout_weight="1">
</EditText>
<Button android:id="@+id/delete"
android:text="ID删除"
android:layout_width="50dip"
android:layout_height="wrap_content"
android:padding = "3dip"
android:layout_weight="1">
</Button>
<Button android:id="@+id/query"
android:text="ID查询"
android:layout_width="50dip"
android:layout_height="wrap_content"
android:padding = "3dip"
android:layout_weight="1">
</Button>
<Button android:id="@+id/update"
android:text="ID更新"
android:layout_width="50dip"
android:layout_height="wrap_content"
android:padding = "3dip"
android:layout_weight="1">
</Button>
</LinearLayout>
<TextView android:id="@+id/label"
android:text="查询结果:"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lv1"
/>
</LinearLayout>
<!-- <ScrollView android:layout_width="fill_parent"-->
<!-- android:layout_height="fill_parent">-->
<!-- <LinearLayout android:layout_width="fill_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:orientation="vertical">-->
<!-- <TextView android:id="@+id/display"-->
<!-- android:text=""-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content">-->
<!-- </TextView>-->
<!-- </LinearLayout>-->
<!-- </ScrollView>-->
</LinearLayout>
package com.example.myworksql;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private DBAdapter dbAdepter ;
private EditText nameText;
private EditText ageText;
private EditText heightText;
private EditText idEntry;
private TextView labelView;
//private TextView displayView;
private ListView listv;
public void clear(View view){
ArrayAdapter adapter = (ArrayAdapter) listv.getAdapter();
List<String> list = new ArrayList<String>();
list.add("ID" + " " + "姓名" + " " + "班级" + " " + "学号");
int count = adapter.getCount();
if (count > 0){
listv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,list));
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nameText = (EditText)findViewById(R.id.name);
ageText = (EditText)findViewById(R.id.age);
heightText = (EditText)findViewById(R.id.height);
idEntry = (EditText)findViewById(R.id.id_entry);
labelView = (TextView)findViewById(R.id.label);
listv = (ListView)findViewById(R.id.lv1);
//displayView = (TextView)findViewById(R.id.display);
Button addButton = (Button)findViewById(R.id.add);
Button queryAllButton = (Button)findViewById(R.id.query_all);
Button clearButton = (Button)findViewById(R.id.clear);
Button deleteAllButton = (Button)findViewById(R.id.delete_all);
Button queryButton = (Button)findViewById(R.id.query);
Button deleteButton = (Button)findViewById(R.id.delete);
Button updateButton = (Button)findViewById(R.id.update);
addButton.setOnClickListener(addButtonListener);
queryAllButton.setOnClickListener(queryAllButtonListener);
clearButton.setOnClickListener(clearButtonListener);
deleteAllButton.setOnClickListener(deleteAllButtonListener);
queryButton.setOnClickListener(queryButtonListener);
deleteButton.setOnClickListener(deleteButtonListener);
updateButton.setOnClickListener(updateButtonListener);
List<String> list = new ArrayList<String>();
list.add("ID" + " " + "姓名" + " " + "班级" + " " + "学号");
ArrayAdapter<String> adp = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,list);
listv.setAdapter(adp);
dbAdepter = new DBAdapter(this);
dbAdepter.open();
}
OnClickListener addButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
People people = new People();
people.Name = nameText.getText().toString();
people.Age = ageText.getText().toString();
people.Height =heightText.getText().toString();
long colunm = dbAdepter.insert(people);
if (colunm == -1 ){
labelView.setText("添加过程错误!");
} else {
labelView.setText("成功添加数据,ID:"+String.valueOf(colunm));
}
}
};
OnClickListener queryAllButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
People[] peoples = dbAdepter.queryAllData();
if (peoples == null){
clear(v);
labelView.setText("数据库中没有数据");
return;
}
labelView.setText("数据库:");
String msg = "";
clear(v);
for (int i = 0 ; i<peoples.length; i++){
ArrayAdapter<String> temp_adp = (ArrayAdapter<String>) listv.getAdapter();
temp_adp.add(peoples[i].ID+" "+peoples[i].Name+" "+peoples[i].Age+" "+peoples[i].Height);
}
}
};
OnClickListener clearButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
clear(v);
}
};
OnClickListener deleteAllButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
dbAdepter.deleteAllData();
String msg = "数据全部删除";
labelView.setText(msg);
}
};
OnClickListener queryButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
int id = Integer.parseInt(idEntry.getText().toString());
People[] peoples = dbAdepter.queryOneData(id);
if (peoples == null){
clear(v);
labelView.setText("数据库中没有ID为"+String.valueOf(id)+"的数据");
return;
}
labelView.setText("数据库:");
clear(v);
ArrayAdapter<String> temp_adp = (ArrayAdapter<String>) listv.getAdapter();
temp_adp.add(peoples[0].ID+" "+peoples[0].Name+" "+peoples[0].Age+" "+peoples[0].Height);
}
};
OnClickListener deleteButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
long id = Integer.parseInt(idEntry.getText().toString());
long result = dbAdepter.deleteOneData(id);
String msg = "删除ID为"+idEntry.getText().toString()+"的数据" + (result>0?"成功":"失败");
labelView.setText(msg);
}
};
OnClickListener updateButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
People people = new People();
people.Name = nameText.getText().toString();
people.Age = ageText.getText().toString();
people.Height = heightText.getText().toString();
long id = Integer.parseInt(idEntry.getText().toString());
long count = dbAdepter.updateOneData(id, people);
if (count == -1 ){
labelView.setText("更新错误!");
} else {
labelView.setText("更新成功,更新数据"+String.valueOf(count)+"条");
}
}
};
}
package com.example.myworksql;
public class People {
public int ID = -1;
public String Name;
public String Age;
public String Height;
@Override
public String toString(){
String result = "";
result += "ID:" + this.ID + ",";
result += "姓名:" + this.Name + ",";
result += "年龄:" + this.Age + ", ";
result += "身高:" + this.Height + ",";
return result;
}
}
package com.example.myworksql;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
public class DBAdapter {
private static final String DB_NAME = "peoples.db";
private static final String DB_TABLE = "peopleinfo";
private static final int DB_VERSION = 1;
public static final String KEY_ID = "_id";
public static final String KEY_NAME = "name";
public static final String KEY_AGE = "age";
public static final String KEY_HEIGHT = "height";
private SQLiteDatabase db;
private final Context context;
private DBOpenHelper dbOpenHelper;
public DBAdapter(Context _context) {
context = _context;
}
/** Close the database */
public void close() {
if (db != null){
db.close();
db = null;
}
}
/** Open the database */
public void open() throws SQLiteException {
dbOpenHelper = new DBOpenHelper(context, DB_NAME, null, DB_VERSION);
try {
db = dbOpenHelper.getWritableDatabase();
}
catch (SQLiteException ex) {
db = dbOpenHelper.getReadableDatabase();
}
}
public long insert(People people) {
ContentValues newValues = new ContentValues();
newValues.put(KEY_NAME, people.Name);
newValues.put(KEY_AGE, people.Age);
newValues.put(KEY_HEIGHT, people.Height);
return db.insert(DB_TABLE, null, newValues);
}
public People[] queryAllData() {
Cursor results = db.query(DB_TABLE, new String[] { KEY_ID, KEY_NAME, KEY_AGE, KEY_HEIGHT},
null, null, null, null, null);
return ConvertToPeople(results);
}
public People[] queryOneData(long id) {
Cursor results = db.query(DB_TABLE, new String[] { KEY_ID, KEY_NAME, KEY_AGE, KEY_HEIGHT},
KEY_ID + "=" + id, null, null, null, null);
return ConvertToPeople(results);
}
private People[] ConvertToPeople(Cursor cursor){
int resultCounts = cursor.getCount();
if (resultCounts == 0 || !cursor.moveToFirst()){
return null;
}
People[] peoples = new People[resultCounts];
for (int i = 0 ; i<resultCounts; i++){
peoples[i] = new People();
peoples[i].ID = cursor.getInt(0);
int namei=cursor.getColumnIndex(KEY_NAME);
int agei=cursor.getColumnIndex(KEY_AGE);
int heighti=cursor.getColumnIndex(KEY_HEIGHT);
peoples[i].Name = cursor.getString(namei);
peoples[i].Age = cursor.getString(agei);
peoples[i].Height = cursor.getString(heighti);
cursor.moveToNext();
}
return peoples;
}
public long deleteAllData() {
return db.delete(DB_TABLE, null, null);
}
public long deleteOneData(long id) {
return db.delete(DB_TABLE, KEY_ID + "=" + id, null);
}
public long updateOneData(long id , People people){
ContentValues updateValues = new ContentValues();
updateValues.put(KEY_NAME, people.Name);
updateValues.put(KEY_AGE, people.Age);
updateValues.put(KEY_HEIGHT, people.Height);
return db.update(DB_TABLE, updateValues, KEY_ID + "=" + id, null);
}
/** 静态Helper类,用于建立、更新和打开数据库*/
private static class DBOpenHelper extends SQLiteOpenHelper {
public DBOpenHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
private static final String DB_CREATE = "create table " +
DB_TABLE + " (" + KEY_ID + " integer primary key autoincrement, " +
KEY_NAME+ " text not null, " + KEY_AGE+ " text not null," + KEY_HEIGHT + " text not null);";
@Override
public void onCreate(SQLiteDatabase _db) {
_db.execSQL(DB_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) {
_db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE);
onCreate(_db);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="班级:"
android:textSize="20dp">
</TextView>
<EditText
android:id="@+id/et_class"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="计算机161"
android:textSize="20dp"
>
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学号:"
android:textSize="20dp">
</TextView>
<EditText
android:id="@+id/et_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2016001112"
android:textSize="20dp"
>
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:"
android:textSize="20dp">
</TextView>
<EditText
android:id="@+id/et_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="张晓"
android:textSize="20dp"
>
</EditText>
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="添加"
android:id="@+id/Btn_add"
>
</Button>
</LinearLayout>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/List"
>
</ListView>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.mywork3;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.PopupMenu;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
Button btn_a;
ListView lst;
int idx = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lst = findViewById(R.id.List);
btn_a = findViewById(R.id.Btn_add);
List<String> list = new ArrayList<String>();
list.add("编号 名字 学号 班级");
ArrayAdapter<String> adp = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,list);
lst.setAdapter(adp);
btn_a.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ArrayAdapter<String> temp_adp = (ArrayAdapter<String>) lst.getAdapter();
EditText et_name = findViewById(R.id.et_name);
EditText et_no = findViewById(R.id.et_no);
EditText et_class = findViewById(R.id.et_class);
temp_adp.add(idx+" "+et_name.getText().toString()+" "+et_no.getText().toString()+" "+et_class.getText().toString());
//lst.getAdapter();
idx++;
}
});
lst.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent,
View view,
int position,
long id) {
if (id>0) {
PopupMenu menu = new PopupMenu(MainActivity.this, view);
menu.getMenuInflater().inflate(R.menu.popup, menu.getMenu());
menu.show();
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
ArrayAdapter<String> temp_adp = (ArrayAdapter<String>) lst.getAdapter();
temp_adp.remove(temp_adp.getItem(position));
return false;
}
});
}
return false;
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/search"
android:icon="@android:drawable/ic_menu_delete"
android:title="删除" />
</menu>
时间
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="50dp"
android:text="秒表"
android:textSize="50dp" />
<TextView
android:id="@+id/Text_display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="50dp"
android:layout_marginBottom="30dp"
android:text="00:00:00"
android:textSize="50dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="horizontal">
<Button
android:id="@+id/But_to0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="清零" />
<Button
android:id="@+id/But_Run"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="开始" />
<Button
android:id="@+id/But_Stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="停止" />
<Button
android:id="@+id/But_Pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="暂停" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.mywork5;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
enum State{CLEAR,RUN,STOP,Pause}
private State S = State.CLEAR;
private long count;
private long count_start;
private long Pause_time;
private long Re_start;
private String result = "00:00:00";
private Thread work = new Thread(new Runnable() {
@Override
public void run() {
TextView tv= findViewById(R.id.Text_display);
try {
while (!Thread.interrupted()){
switch (S){
case STOP:
count = 0;
break;
case RUN:
count = System.currentTimeMillis()-count_start;
result = String.valueOf(count);
display();
break;
case CLEAR:
result = "00:00:00";
count = 0;
break;
case Pause:
//count = 0;
break;
}
tv.post(new Runnable() {
@Override
public void run() {
tv.setText(result);
}
});
Thread.sleep(10);
}
}catch (Exception e){
}
}
});
Boolean s = false;
void display(){
long temp = count;
long temp_S ,temp_ms,temp_m;
String t_s,t_m,t_ms;
temp_ms = (count%1000)/10;
temp_S = (count/1000)%60;
temp_m = (count/60000)%60;
if (temp_ms<10){
t_ms="0"+temp_ms;
}else {
t_ms = String.valueOf(temp_ms);
}
if (temp_S<10){
t_s="0"+temp_S;
}else {
t_s = String.valueOf(temp_S);
}
if (temp_m<10){
t_m="0"+temp_m;
}else {
t_m = String.valueOf(temp_m);
}
result = t_m+":"+t_s+":"+t_ms;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt_start = findViewById(R.id.But_Run);
Button bt_stop = findViewById(R.id.But_Stop);
Button bt_clear = findViewById(R.id.But_to0);
Button bt_pause = findViewById(R.id.But_Pause);
bt_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (S){
case CLEAR:
case STOP:
S = State.RUN;
count_start = System.currentTimeMillis();
break;
case RUN:
break;
case Pause:
S = State.RUN;
Re_start = System.currentTimeMillis();
Re_start -=(Pause_time-count_start);
count_start = Re_start;
break;
default:
break;
}
}
});
bt_stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (S){
case CLEAR:
case STOP:
break;
case Pause:
case RUN:
S = State.STOP;
break;
}
}
});
bt_clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (S){
case CLEAR:
break;
case RUN:
case Pause:
case STOP:
S = State.CLEAR;
break;
}
}
});
bt_pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (S){
case CLEAR:
case Pause:
case STOP:
break;
case RUN:
S = State.Pause;
Pause_time = System.currentTimeMillis();
break;
}
}
});
}
@Override
protected void onStart() {
super.onStart();
work.start();
}
@Override
protected void onStop() {
super.onStop();
work.interrupt();
}
}
计算器
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/linearLayoutbig"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:id="@+id/linearLayoutword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginBottom="100dp"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="25dp"
android:text="计算器"
android:textSize="28dp" />
<TextView
android:id="@+id/text2x"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginTop="25dp"
android:text="0"
android:textSize="30dp" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#66CCFF" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutone"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="6dp"
android:orientation="horizontal">
<Button
android:id="@+id/btn_C"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="C" />
<Button
android:id="@+id/btn_CE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="CE" />
<Button
android:id="@+id/btn_sqrt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="√" />
<Button
android:id="@+id/btn_plus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="+" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayouttwo"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="6dp"
android:orientation="horizontal">
<Button
android:id="@+id/btn_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="1" />
<Button
android:id="@+id/btn_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="2" />
<Button
android:id="@+id/btn_three"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="3" />
<Button
android:id="@+id/btn_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="-" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutthree"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="6dp"
android:orientation="horizontal">
<Button
android:id="@+id/btn_four"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="4" />
<Button
android:id="@+id/btn_five"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="5" />
<Button
android:id="@+id/btn_six"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="6" />
<Button
android:id="@+id/btn_multi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="*" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutfour"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="6dp"
android:orientation="horizontal">
<Button
android:id="@+id/btn_seven"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="7" />
<Button
android:id="@+id/btn_eight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="8" />
<Button
android:id="@+id/btn_nine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="9" />
<Button
android:id="@+id/btn_divide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="/" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutfive"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="6dp"
android:orientation="horizontal">
<Button
android:id="@+id/btn_piont"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="." />
<Button
android:id="@+id/btn_0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="0" />
<Button
android:id="@+id/btn_p"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="±" />
<Button
android:id="@+id/btn_equal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="=" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.workforhalfm;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Path;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private static String TAG="LIFTCYCLE";
Button btn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9;
Button btnC,btnCE,btnsqrt,btnplus,btnsub,btnmulti,btndivide,btnequal,btnpoint,btnaddord;
TextView text;
// int s;
// String ss="";
// int ty = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG,"(1)onCreate()");
initViewListener();
}
@Override
public void onStart(){
super.onStart();
Log.i(TAG,"(2)onStart()");
}
@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.i(TAG,"(3)onRestoreInstanceState");
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG,"(4)onResume()");
}
@Override
public void onSaveInstanceState(Bundle savedInstanceStace){
super.onSaveInstanceState(savedInstanceStace);
Log.i(TAG,"(5)onSaveInstanceState()");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG,"(6)onRestart()");
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG,"(7)onPause()");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG,"(8)onStop()");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG,"(9)onDestroy()");
}
private void initViewListener(){
btn0 = (Button) findViewById(R.id.btn_0);
btn0.setOnClickListener(new Click());
btn1 = (Button) findViewById(R.id.btn_one);
btn1.setOnClickListener(new Click());
btn2 = (Button) findViewById(R.id.btn_two);
btn2.setOnClickListener(new Click());
btn3 = (Button) findViewById(R.id.btn_three);
btn3.setOnClickListener(new Click());
btn4 = (Button) findViewById(R.id.btn_four);
btn4.setOnClickListener(new Click());
btn5 = (Button) findViewById(R.id.btn_five);
btn5.setOnClickListener(new Click());
btn6 = (Button) findViewById(R.id.btn_six);
btn6.setOnClickListener(new Click());
btn7 = (Button) findViewById(R.id.btn_seven);
btn7.setOnClickListener(new Click());
btn8 = (Button) findViewById(R.id.btn_eight);
btn8.setOnClickListener(new Click());
btn9 = (Button) findViewById(R.id.btn_nine);
btn9.setOnClickListener(new Click());
btnC = (Button) findViewById(R.id.btn_C);
btnC.setOnClickListener(new Click());
btnCE = (Button) findViewById(R.id.btn_CE);
btnCE.setOnClickListener(new Click());
btnsqrt = (Button) findViewById(R.id.btn_sqrt);
btnsqrt.setOnClickListener(new Click());
btnplus = (Button) findViewById(R.id.btn_plus);
btnplus.setOnClickListener(new Click());
btnsub = (Button) findViewById(R.id.btn_sub);
btnsub.setOnClickListener(new Click());
btnmulti = (Button) findViewById(R.id.btn_multi);
btnmulti.setOnClickListener(new Click());
btndivide = (Button) findViewById(R.id.btn_divide);
btndivide.setOnClickListener(new Click());
btnequal = (Button) findViewById(R.id.btn_equal);
btnequal.setOnClickListener(new Click());
btnpoint = (Button) findViewById(R.id.btn_piont);
btnpoint.setOnClickListener(new Click());
btnaddord = (Button) findViewById(R.id.btn_p);
btnaddord.setOnClickListener(new Click());
text = (TextView) findViewById(R.id.text2x);
text.setOnClickListener(new Click());
}
private boolean LastIsOperator;//记录当前是否进行计算操作
private String LastOperator="";//记录上一次进行计算操作的结果
private double FirstN = 0;
private double SecondN = 0;
private int IO=0;
private int ty= 0;
private boolean clean;
class Click implements View.OnClickListener {
public void onClick(View v) {
String currentText = text.getText().toString();
String FinNumber = "";
if (currentText.equals("0")) {
text.setText("");
}
FinNumber = text.getText().toString();
if (!LastOperator.equals("")) {//判断上一次操作的数是否为空,非空则建立索引,随之修改当前操作数
int index = FinNumber.lastIndexOf(LastOperator);
FinNumber = FinNumber.substring(index + 1);
}
switch (v.getId()) {
case R.id.btn_0:
text.setText(text.getText() + "0");
LastIsOperator = false;
break;
case R.id.btn_one:
text.setText(text.getText() + "1");
LastIsOperator = false;
break;
case R.id.btn_two:
text.setText(text.getText() + "2");
LastIsOperator = false;
break;
case R.id.btn_three:
text.setText(text.getText() + "3");
LastIsOperator = false;
break;
case R.id.btn_four:
text.setText(text.getText() + "4");
LastIsOperator = false;
break;
case R.id.btn_five:
text.setText(text.getText() + "5");
LastIsOperator = false;
break;
case R.id.btn_six:
text.setText(text.getText() + "6");
LastIsOperator = false;
break;
case R.id.btn_seven:
text.setText(text.getText() + "7");
LastIsOperator = false;
break;
case R.id.btn_eight:
text.setText(text.getText() + "8");
LastIsOperator = false;
break;
case R.id.btn_nine:
text.setText(text.getText() + "9");
LastIsOperator = false;
break;
case R.id.btn_piont:
text.setText(text.getText() + ".");
LastIsOperator = false;
break;
case R.id.btn_C:
text.setText("");
LastIsOperator = false;
FirstN = 0;
SecondN = 0;
LastOperator = "";
break;
case R.id.btn_CE:
if (TextUtils.isEmpty(text.getText())) {
return;
}
LastIsOperator = false;
text.setText(currentText.substring(0, currentText.length() - 1).length() > 0
? currentText.substring(0, currentText.length() - 1) : "0");
break;
case R.id.btn_divide:
if ((TextUtils.isEmpty(text.getText())
|| LastIsOperator) && !LastOperator.equals("=")) {
return;
}
OpratorCalc(FinNumber, "/");
LastIsOperator = true;
text.setText(text.getText() + "/");
LastOperator = "/";
break;
case R.id.btn_plus:
if ((TextUtils.isEmpty(text.getText())
|| LastIsOperator) && !LastOperator.equals("=")) {
return;
}
OpratorCalc(FinNumber, "+");
LastIsOperator = true;
text.setText(text.getText() + "+");
LastOperator = "+";
break;
case R.id.btn_sub:
if ((TextUtils.isEmpty(text.getText())
|| LastIsOperator) && !LastOperator.equals("=")) {
return;
}
OpratorCalc(FinNumber, "-");
LastIsOperator = true;
text.setText(text.getText() + "-");
LastOperator = "-";
break;
case R.id.btn_multi:
if ((TextUtils.isEmpty(text.getText())
|| LastIsOperator) && !LastOperator.equals("=")) {
return;
}
OpratorCalc(FinNumber, "*");
LastIsOperator = true;
text.setText(text.getText() + "*");
LastOperator = "*";
break;
case R.id.btn_sqrt:
if ((TextUtils.isEmpty(text.getText())
|| LastIsOperator) && !LastOperator.equals("=")) {
return;
}
OpratorCalc(FinNumber, "√");
LastIsOperator = true;
text.setText(text.getText() + "√");
LastOperator = "√";
break;
case R.id.btn_equal:
double result = 0;
if (TextUtils.isEmpty(LastOperator)) {
return;
}
OpratorResult(FinNumber);
SecondN = 0;
LastOperator = "=";
LastIsOperator = true;
text.setText(String.valueOf(FirstN));
break;
case R.id.btn_p:
if ((TextUtils.isEmpty(text.getText())
|| LastIsOperator) && !LastOperator.equals("=")) {
return;
}
LastIsOperator = true;
text.setText(text.getText() + "±");
LastOperator = "±";
break;
}
}
}
public void OpratorCalc(String operatorNumber,String currentOperator){
if (TextUtils.isEmpty(LastOperator)){
FirstN = Double.parseDouble(operatorNumber);
return;
}
if (LastOperator.equals(currentOperator)){
if (LastOperator.equals("/")){
FirstN = FirstN/Double.parseDouble(operatorNumber);
}
else if(LastOperator.equals("*")){
FirstN = FirstN*Double.parseDouble(operatorNumber);
}
else if(LastOperator.equals("-")){
FirstN = FirstN-Double.parseDouble(operatorNumber);
}
else if(LastOperator.equals("+")){
FirstN = FirstN+Double.parseDouble(operatorNumber);
}
else if(LastOperator.equals("√")){
FirstN = Math.sqrt(FirstN);
}
return;
}
Oprator(operatorNumber);
}
public void OpratorResult(String OperatorN){
Oprator(OperatorN);
}
public void Oprator(String operatorN){
if (SecondN != 0){
if (LastOperator.equals("/")){
SecondN = SecondN/Double.parseDouble(operatorN);
FirstN = FirstN/SecondN;
}
else if(LastOperator.equals("*")){
SecondN = SecondN*Double.parseDouble(operatorN);
FirstN = FirstN*SecondN;
}
else if(LastOperator.equals("+")){
SecondN = Double.parseDouble(operatorN);
FirstN = FirstN+SecondN;
}
else if(LastOperator.equals("-")){
SecondN = Double.parseDouble(operatorN);
FirstN = FirstN-SecondN;
}
else if(LastOperator.equals("√")){
}
}
else {
if (LastOperator.equals("/")){
FirstN = FirstN/Double.parseDouble(operatorN);
}
else if(LastOperator.equals("*")){
FirstN = FirstN*Double.parseDouble(operatorN);
}
else if(LastOperator.equals("+")){
FirstN = FirstN+Double.parseDouble(operatorN);
}
else if(LastOperator.equals("-")){
FirstN = FirstN-Double.parseDouble(operatorN);
}
else if (LastOperator.equals("√")){
FirstN = Math.sqrt(FirstN);
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.workforhalfm">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.WorkForHalfm">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
生命周期
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.myapplication;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private static String TAG="LIFTCYCLE";
//private Object view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG,"(1)onCreate()");
//Button button=(Button) findViewById(R.id.btn_finish);
// button.setOnClickListener(new View.OnClickListener(){
// public void onClick(View view){
// finish();
// }
// });
}
@Override
public void onStart(){
super.onStart();
Log.i(TAG,"(2)onStart()");
}
@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.i(TAG,"(3)onRestoreInstanceState");
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG,"(4)onResume()");
}
@Override
public void onSaveInstanceState(Bundle savedInstanceStace){
super.onSaveInstanceState(savedInstanceStace);
Log.i(TAG,"(5)onSaveInstanceState()");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG,"(6)onRestart()");
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG,"(7)onPause()");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG,"(8)onStop()");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG,"(9)onDestroy()");
}
}
组件通信
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/Bt_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="50dp"
android:layout_marginBottom="63dp"
android:text="登录"
app:layout_constraintBottom_toTopOf="@+id/textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_margin="50dp">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名" />
<EditText
android:id="@+id/Edit_n"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity2">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="100dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:"
android:layout_marginLeft="30dp"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="half_m"
android:id="@+id/Edit_Name"
/>
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回"
android:layout_marginTop="80dp"
android:id="@+id/Btn_return"
android:layout_gravity="center"
>
</Button>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.myapplication;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
EditText tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.Bt_login);
tv= findViewById(R.id.Edit_n);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intt = new Intent(MainActivity.this,MainActivity2.class);
startActivityForResult(intt,0);
//startActivityForResult(intt,0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0){
tv.setText(data.getStringExtra("name"));
}
}
}
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Button bt = findViewById(R.id.Btn_return);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText et = findViewById(R.id.Edit_Name);
Intent result = new Intent();
result.putExtra("name",et.getText().toString());
setResult(0,result);
finish();
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApplication">
<activity
android:name=".MainActivity2"
android:exported="true" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>