【问题标题】:without moving next activity Send data from another activity in android不移动下一个活动从android中的另一个活动发送数据
【发布时间】:2014-11-03 12:42:07
【问题描述】:



在这段代码中,我想将名字和中间名发送到另一个活动。但我的问题是,不点击任何按钮我想将这两个值发送到下一个活动。

因为在这个活动中,点击发送按钮,数据应该传递到下一个活动,但屏幕不应导航到下一个活动。

现在我想在另一个类文件中访问这两个值。

谁能帮帮我。

 Send.setOnClickListener(new OnClickListener() {             
            public void onClick(View v)
            {
                 String first_name = fname1.getText().toString();
                 String middle_name = mname1.getText().toString();
 }   
        });

【问题讨论】:

  • 您可以为所有常量或临时数据创建一个类,并为其分配您的用户名和密码值,以便您可以从其他类访问这些凭据:D
  • 你能给我举个例子吗

标签: android android-activity message-passing


【解决方案1】:

您可以使用SQLiteShared Preferences 或简单地通过使用static 变量创建一个新的公共类来实现此目的。 创建一个新类:

public class Global {
    public static String first_name = "";
    public static String middle_name = "";
}

更改您的代码:

 Send.setOnClickListener(new OnClickListener() {             
            public void onClick(View v)
            {
                 Global.first_name = fname1.getText().toString();
                 Global.middle_name = mname1.getText().toString();
 }   
        });

【讨论】:

  • Hi 应将 Global.class 中的所有值初始化为 null
  • 全局类名到最终它不能从其他类访问
  • @user 抱歉,它应该只是静态的,而不是最终的
  • Global.middle_name like this 我要访问firstname
  • @user yes :) 如果您想访问该名称,只需调用“Global.first_name”
【解决方案2】:

使用SharedPreferences 存储键值对。即使应用程序不在前台,您也可以在整个应用程序中使用。您可以查看此example。希望它可以帮助您解决问题。

【讨论】:

    【解决方案3】:

    第一个选项:

    Intent i=new Intent(context,SOMECLASSNAME.class);
    i.putExtra("first_name", fname1.getText().toString());
    i.putExtra("name", mname1.getText().toString());
    context.startActivity(i);
    

    第二个选项: 您可以使用共享首选项http://developer.android.com/training/basics/data-storage/shared-preferences.html

    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
    editor.putString("first_name", fname1.getText().toString());
    editor.putString("second_name", mname1.getText().toString());
    editor.commit();
    

    【讨论】:

    • 如果我使用意图意味着它将移动到下一个活动
    【解决方案4】:

    您可以为所有常量或临时数据创建一个类,并将您的用户名和密码值分配给该类,以便您可以从其他类访问这些凭据

    public class Constants
    {
    
        public static String F_Name = "fName";
    
        public static String M_Name = "mName";
    }
    

    然后用

    赋值
    String FName = fname.getText().toString();
    String MName = mname.getText().toString();
         Constants.F_Name = FName;
        Constants.M_Name = MName;
    

    然后在其他类中获取这些值,例如

    if (FirstName.equals(Constants.F_Name){
    }
    

    这些值将一直设置到您的应用运行为止

    【讨论】:

    • 假设值是动态手段?
    • 看看你什么时候会得到像你的情况那样的值 String first_name = fname1.getText().toString();将这些值分配给 COnstant.FName = fname1;然后您可以使用 Constants.FName 从您的任何类中获取此 fname
    • @user 您也可以为此使用 sharedPrefs,但即使在您退出应用程序后它也会被保存,直到您将这些值替换为另一个值,您可以使用任何随机字符串或简单字符串初始化全局值F_Name;
    猜你喜欢
    • 2013-07-05
    • 2019-07-31
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    相关资源
    最近更新 更多