android开发分享如何将一个活动的值传递给之前的活动

我如何将一个屏幕的值传递到其前一个屏幕?

考虑这种情况:我有两个活动。 第一个屏幕有一个TextView和一个button,第二个活动有一个EditText和一个button。

如果我点击第一个button,那么它必须移动到第二个活动,这里用户必须在文本框中键入一些东西。 如果他从第二个屏幕按下button,那么文本框中的值应该移到第一个活动,并且应该显示在第一个活动TextView

    捕获在另一个活动中执行的动作需要三个步骤。

    通过使用主活动中的startActivityForResult启动辅助活动(您的“编辑文本”活动)作为子活动。

     Intent i = new Intent(this,TextEntryActivity.class); startActivityForResult(i, STATIC_INTEGER_VALUE); 

    在子活动中,当用户单击button时,不需要closures活动,而是需要创build一个新的Intent,并将input的文本值包含在其extras包中。 在调用finishclosures第二个Activity之前,将它传回给父调用setResult

     resultIntent = new Intent(null); resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, enteredTextValue); setResult(Activity.RESULT_OK, resultIntent); finish(); 

    最后一步是在调用Activity中,重写onActivityResult来监听来自文本条目Activity的callback。 从返回的Intent中获取额外的内容以获得您应该显示的文本值。

     @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case (STATIC_INTEGER_VALUE) : { if (resultCode == Activity.RESULT_OK) { String newText = data.getStringExtra(PUBLIC_STATIC_STRING_IDENTIFIER); // TODO Update your TextView. } break; } } } 

    有几种方法可以访问其他类或Activity中的variables或对象。

    A.数据库

    B.共享喜好。

    C.对象序列化。

    D.一个能容纳普通数据的类可以被命名为Common Utilities它取决于你。

    E.通过Intents和Parcelable接口传递数据。

    这取决于你的项目需求。

    A. 数据库

    SQLite是embedded到Android的开源数据库。 SQLite支持标准的关系数据库function,如SQL语法,事务和预处理语句。

    教程 –

    B. 共享首选项

    假设你想存储用户名。 所以现在有两件事是关键的用户名, 值的价值。

    如何存储

      // Create object of SharedPreferences. SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); //now get Editor SharedPreferences.Editor editor = sharedPref.edit(); //put your value editor.putString("userName", "stackoverlow"); //commits your edits editor.commit(); 

    使用putString(),putBoolean(),putInt(),putFloat(),putLong()可以保存所需的dtatype。

    如何获取

     SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); String userName = sharedPref.getString("userName", "Not Available"); 

    C. 对象序列化

    如果我们想要保存一个对象状态来通过networking发送它,或者你也可以使用它,你也可以使用对象serlization。

    使用java bean并将其作为其中一个字段存储,并为此使用getter和setter

    JavaBeans是具有属性的Java类。 将属性看作私有实例variables。 由于他们是私人的,所以他们可以从课外访问的唯一途径就是通过课堂上的方法。 更改属性值的方法称为setter方法,检索属性值的方法称为getter方法。

     public class VariableStorage implements Serializable { private String inString ; public String getInString() { return inString; } public void setInString(String inString) { this.inString = inString; } } 

    通过使用在邮件方法中设置variables

     VariableStorage variableStorage = new VariableStorage(); variableStorage.setInString(inString); 

    然后使用对象Serialzation序列化这个对象,并在你的其他类反序列化这个对象。

    在序列化过程中,一个对象可以表示为一个包含对象数据的字节序列,以及关于对象types和存储在对象中的数据types的信息。

    序列化对象写入文件后,可以从文件中读取并反序列化,即可以使用表示对象及其数据的types信息和字节来重新创build内存中的对象。

    如果你想要这个教程,请参考这个链接

    在其他类中获取variables

    D.共同事业

    你可以通过自己创build一个能包含你在项目中经常需要的常用数据的类。

    样品

     public class CommonUtilities { public static String className = "CommonUtilities"; } 

    E. 通过意图传递数据

    请参阅本教程以获取传递数据的选项。

    你不必..

    只需从第二个活动调用newIntenet()

     Intent retData=new Intent(); 

    添加数据以传回

     putExtras (retData.putExtra("userName", getUsrName())); 

    继续使用setResult

     setResult(RESULT_OK, retData); 

    然后可以完成

     finish(); 

    startActivityForResult()

    这里有一个来自SDK的链接和更多的信息:

    并向下滚动到“从屏幕返回结果”部分

    我经常使用静态setter方法在调用活动中使用静态variables来设置它们。

    通过这种方式,我可以随意更改任何活动的价值,而不pipe各种活动之间的确切stream程。

    注意,这个技巧只有在你不关心应用程序中同一活动(类)的多个副本的实例化时才能使用,但是我发现这是最容易实现的,而且我最多使用它。

    这里最好的办法是把variables放到一个在范围外定义的公共类中

     public class Utils { public static String mPosition; } 

    在你的代码(例如OnButtonClick等)

     Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); Utils.mPosition = mViewData.mPosition + ""; LogHelper.e(TAG, "before intent: " + Utils.mPosition); startActivityForResult(intent, Keys.PICK_CONTACT); 

    里面的代码

    @Override public void onActivityResult(int requestCode,int resultCode,Intent data){if(requestCode == Keys.PICK_CONTACT){if(resultCode == Activity.RESULT_OK){Uri contactData = data.getData();

      //you may use the variable here after intent result LogHelper.e(TAG, "after intent: " + Utils.mPosition); .... 

      以上就是android开发分享如何将一个活动的值传递给之前的活动相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/520683.html

      (0)
      上一篇 2020年12月7日
      下一篇 2020年12月7日

      精彩推荐