第三次作业:
1 实现两个activity之间的传值
2 利用Handle机制实现多线程
3 实现普通通知,带进度条的通知,带按钮的通知
注:所建工程均为Android 6.0 所以只要是Android 6.0(包括6.0)以上的真机,模拟机都可以使用
1 实现两个activity之间的传值:
顾名思义,要建立两个activity,在运行第一个activity时能打开第二个activity,并且把第二个activity的某项值返回给第一个activity。
这里以“去哪旅行”为例,建立第一个activity——mainactivity.java 界面布局为一个按钮,一个文本框,当点击按钮时能够打开第二个activity,显示可供选择的地点,选择之后把值返回到文本框中,结束。
MainActivity.java:
public class MainActivity extends AppCompatActivity {
Button bn;
EditText city;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bn = (Button) findViewById(R.id.bn);
city = (EditText) findViewById(R.id.city);
Button bn1 = (Button) findViewById(R.id.bn1);
bn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View source) {
Intent intent = new Intent(MainActivity.this, SelectCityActivity.class);
startActivityForResult(intent, 0);
}
});
bn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件,在存放资源代码的文件夹下下,
Intent i = new Intent(MainActivity.this , HandleActivityDemo.class);
//启动
startActivity(i);
}
});
}
@Override
public void onActivityReenter(int resultCode, Intent data) {
super.onActivityReenter(resultCode, data);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == 0 && (resultCode == 0)) {
Bundle data = intent.getExtras();
String resultCity = data.getString("city");
city.setText(resultCity);
}
}
SelectCittyActivity:
public class SelectCityActivity extends ExpandableListActivity {
private String[] provinces=new String[]{"安徽","江苏","浙江"};
private String[][] cities=new String[][]{
{"合肥","芜湖","马鞍山","阜阳"},
{"南京","宿迁","无锡","苏州"},
{"杭州","金华","宁波","温州"}};
// @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_select_city);
ExpandableListAdapter adapter=new BaseExpandableListAdapter() {
@Override
public int getGroupCount() {
return provinces.length;
}
@Override
public int getChildrenCount(int groupPosition) {
return cities[groupPosition].length;
}
private TextView getTextView(){
AbsListView.LayoutParams lp=new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,64);
TextView textView=new TextView(SelectCityActivity.this);
textView.setLayoutParams(lp);
textView.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT);
textView.setPadding(36,0,0,0);
textView.setTextSize(20);
return textView;
}
@Override
public Object getGroup(int groupPosition) {
return provinces[groupPosition];
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return cities[groupPosition][childPosition];
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
LinearLayout ll=new LinearLayout(SelectCityActivity.this);
ll.setOrientation(LinearLayout.HORIZONTAL);
ImageView logo=new ImageView(SelectCityActivity.this);
ll.addView(logo);
TextView textView=getTextView();