败犬杨大胖

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  12 随笔 :: 0 文章 :: 0 评论 :: 15537 阅读

Android Studio学了有几天了,需要做的基本做完了,遂整理一下用到的各种方法

 

  1.实现HTTP请求

  Android9.0以上默认限制http请求,需要在AndroidManifest.xml中添加如下语句:

1 <manifest>
2     <uses-permission android:name="android.permission.INTERNET" />
3     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
4 </manifest>

  然后新建res/xml/network_security_config.xml文件

1 <?xml version="1.0" encoding="utf-8"?>
2 <network-security-config>
3     <base-config cleartextTrafficPermitted="true" />
4 </network-security-config>

 

 

  2.在主线程中进行网络操作

  Android不支持在主线程中进行诸如网络请求等耗时间的操作,需要在主线程中新建一个子线程,如使用button触发网络请求:

1         btn_test.setOnClickListener(v -> {
2             new Thread(() -> {
3                 Looper.prepare();//增加部分
4                 *****.request();
5                 Looper.loop();//增加部分
6             }).start();

  我第一次测试的时候没加Looper那两行也成功了,但之后加了一些页面跳转、弹窗等功能后就报错了

 

  3.button触发AlertDialog弹窗+静态Spinner

  首先新建res/values/spinner_items.xml文件,这个可以看成一个String[],所有静态spinner的项都可以在里面预先定义好:

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <resources>
 3     <string-array name="***">
 4         <item>***</item>
 5         <item>***</item>
 6     </string-array>
 7     <string-array name="***">
 8         <item>***</item>
 9         <item>***</item>
10     </string-array>
11 </resources>
复制代码

  button单击触发显示弹窗的函数:

btn_test.setOnClickListener(view -> showAddDialog());

  新建一个layout/dialog.xml,其中spinner的entries设置为

android:entries="@array/***"//***为spinner_item里对应String-array的name

  显示弹窗的函数:

复制代码
 1     protected void showAddDialog() {
 2         LayoutInflater factory = LayoutInflater.from(this);
 3         final View textEntryView = factory.inflate(R.layout.dialog, null);
 4         final EditText ***= textEntryView.findViewById(R.id.***);
 5         AlertDialog.Builder ad1 = new AlertDialog.Builder(this);
 6         Spinner sp_test= textEntryView.findViewById(R.id.***);
 7         String[] ***= getResources().getStringArray(R.array.***);//***为spinner_item里对应String-array的name
 8         sp_test.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
 9             @Override
10             public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            //***[i]就是选中的值
11 } 12 13 @Override 14 public void onNothingSelected(AdapterView<?> adapterView) { 15 16 } 17 }); 18 19 ad1.setTitle("***"); 20 ad1.setView(textEntryView); 21 22 ad1.setPositiveButton("", (dialog, i) -> { 23 24 }); 25 ad1.setNegativeButton("", (dialog, i) -> { 26 }); 27 ad1.show();// 显示对话框 28 29 }
复制代码

 

  4.button触发页面切换+两页面中传参+动态spinner

  button单击事件中:

Intent intent = new Intent(this,***.class);//***为另一页面
intent.putExtra(KEY_WORD, ***);//***为待传参数
startActivity(intent);

  子页面中:

  

复制代码
1         ArrayAdapter<String> adapter;
2         ArrayList<String> list = new ArrayList<>();
3         Spinner sp_test= findViewById(R.id.***);
4         Intent intent = getIntent();
5         String[] pram= intent.getStringArrayExtra(MainActivity.KEY_WORD);
6         list.addAll(Arrays.asList(pram));
7         adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);                
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
8 sp_test.setAdapter(adapter);
复制代码

 

posted on   bo2333  阅读(135)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示