zoukankan      html  css  js  c++  java
  • Android-----Intent通过startActivityForResult(Intent intent , int 标志符)启动新的Activity

    我们都了解使用 startActivity(intent) 新的activity只能传递数据,却无法返回数据,返回新activity返回的数据我们可以替换startActivityForResult(Intent intent , int 标志符)

    做个备忘录的例子,两个activity: IntentDemo 和  IntentSecend:

    activity_intent_demo.xml代码如下:

     1 <LinearLayout
     2     xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:app="http://schemas.android.com/apk/res-auto"
     4     xmlns:tools="http://schemas.android.com/tools"
     5     android:layout_width="match_parent"
     6     android:layout_height="match_parent"
     7     android:orientation="vertical"
     8     tools:context="com.hs.example.exampleapplication.IntentDemo">
     9 
    10     <ListView
    11         android:id="@+id/intent_listView"
    12         android:layout_width="match_parent"
    13         android:layout_height="wrap_content"/>
    14 
    15 </LinearLayout>

    IntentDemo 代码如下:

     1 public class IntentDemo extends AppCompatActivity implements AdapterView.OnItemClickListener ,
     2         AdapterView.OnItemLongClickListener{
     3 
     4     String [] aMemo = {"1.单击可以编辑备忘" , "2.长按可以清楚备忘" , "3." , "4." , "5." , "6."};
     5 
     6     ArrayAdapter<String> arrayAdapter;
     7 
     8     ListView intent_listView ;
     9 
    10     @Override
    11     protected void onCreate(Bundle savedInstanceState) {
    12         super.onCreate(savedInstanceState);
    13         setContentView(R.layout.activity_intent_demo);
    14 
    15         intent_listView  = this.findViewById(R.id.intent_listView);
    16 
    17         arrayAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,aMemo);
    18 
    19         intent_listView.setAdapter(arrayAdapter);           //设置list view的内容
    20         intent_listView.setOnItemClickListener(this);       //绑定单击监听
    21         intent_listView.setOnItemLongClickListener(this);   //绑定长按监听
    22     }
    23 
    24     @Override
    25     public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
    26         Intent intent = new Intent(this,IntentSecend.class);
    27         //intent.putExtra("编号",pos + 1);       //传递编号
    28         intent.putExtra("备忘",aMemo[pos]);            //传递备忘内容
    29         startActivityForResult(intent , pos); //跳转到编辑内容activity,并以选项位置pos为标志符
    30     }
    31 
    32     @Override
    33     public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
    34         aMemo[i] = (i+1) + ".";                             //清楚内容,只剩编号
    35         arrayAdapter.notifyDataSetChanged();                //通知list view更新要显示的内容
    36         return true;
    37     }
    38 
    39     @Override
    40     protected void onActivityResult(int requestCode , int resultCode , Intent intent){
    41         if(resultCode == RESULT_OK){
    42             aMemo[requestCode] = intent.getStringExtra("备忘");
    43             Toast.makeText(this,aMemo[requestCode].toString(),Toast.LENGTH_SHORT).show();
    44             arrayAdapter.notifyDataSetChanged();
    45         }
    46     }
    47 }

    activity_intent_secend.xml代码如下:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout
     3     xmlns:android="http://schemas.android.com/apk/res/android"
     4     xmlns:app="http://schemas.android.com/apk/res-auto"
     5     xmlns:tools="http://schemas.android.com/tools"
     6     android:layout_width="match_parent"
     7     android:layout_height="match_parent"
     8     android:orientation="vertical"
     9     tools:context="com.hs.example.exampleapplication.IntentSecend">
    10 
    11     <TextView
    12         android:id="@+id/text_view"
    13         android:layout_width="wrap_content"
    14         android:layout_height="wrap_content"
    15         android:background="#FBBB"
    16         android:gravity="top"
    17         android:text="1."
    18         />
    19 
    20     <EditText
    21         android:id="@+id/edit_Text"
    22         android:layout_width="match_parent"
    23         android:layout_height="0dp"
    24         android:layout_weight="1"
    25         android:gravity="top"/>
    26 
    27     <LinearLayout
    28         android:layout_width="match_parent"
    29         android:layout_height="wrap_content"
    30         android:gravity="center"
    31         android:orientation="horizontal">
    32 
    33         <Button
    34             android:layout_width="wrap_content"
    35             android:layout_height="wrap_content"
    36             android:onClick="onCancel"
    37             android:text="取消"/>
    38 
    39         <Button
    40             android:layout_width="wrap_content"
    41             android:layout_height="wrap_content"
    42             android:onClick="onSave"
    43             android:text="保存"/>
    44 
    45 
    46     </LinearLayout>
    47 
    48 </LinearLayout>

    IntentSecend代码如下:

     1 public class IntentSecend extends AppCompatActivity {
     2 
     3     TextView tv ;
     4     EditText et ;
     5 
     6     @Override
     7     protected void onCreate(Bundle savedInstanceState) {
     8         super.onCreate(savedInstanceState);
     9         setContentView(R.layout.activity_intent_secend);
    10 
    11         Intent intent = getIntent();
    12 
    13         String str = intent.getStringExtra("备忘");             //读取传过来的备注数据
    14 
    15         tv = this.findViewById(R.id.text_view);
    16         tv.setText(str.substring(0,2));                             //text view的值
    17 
    18         et = this.findViewById(R.id.edit_Text);
    19         if(str.length()>2){                                             //将传过来的数据去除前两个字符,然后填入edittext
    20             et.setText(str.substring(2));
    21         }
    22     }
    23 
    24     public void onSave(View view) {
    25         Intent intent2 = new Intent();
    26         intent2.putExtra("备忘",tv.getText() + "" + et.getText());
    27         setResult(RESULT_OK , intent2);
    28         finish();
    29     }
    30 
    31     public void onCancel(View view) {
    32         setResult(RESULT_CANCELED);
    33         finish();
    34     }
    35 
    36 }

    运行效果:

  • 相关阅读:
    C# 事务之SqlTransaction
    java获取字符串格式日期向前或向后n天的日期
    java中保留几位小数
    第一个androidAPP项目总结—ListView的上拉和下拉
    java中static作用详解
    第一个androidAPP项目总结—数据请求
    获取控件的高和宽
    Android学习笔记:如何设置ImageView中图片的显示方式
    TextView过长显示省略号, TextView文字中间加横线
    android中控件的使用
  • 原文地址:https://www.cnblogs.com/xiobai/p/10775733.html
Copyright © 2011-2022 走看看