Android将数据传递给活动类?

时间:2012-09-24 07:23:35

标签: android

当我们启动一个Activity时,无论如何都可以访问该类的对象,这样我就可以在类中调用set数据。像

这样的东西
  Intent intent=new Intent (a.this, b.class);
  startActivity(intent);

现在我知道堆上应该有一个b.class对象,在创建对象的onCreate之前,我想将一些数据传递给类。现在我知道我可以对Bundles做同样的事情,但是通过Bundles传递对象变得很难看。如果我有b.class的引用,我可以调用类的方法?我有意义吗?这可能吗 ?

亲切的问候,

3 个答案:

答案 0 :(得分:0)

这将是你的Manifest,这个类可用于设置值,然后在任何Project java Class中获取值

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="package name"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/somee" android:label="@string/app_name" android:noHistory="true" android:name="MainApplication" >
        <activity android:name=".first Page" android:noHistory="true"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

然后在您的主要应用程序

public class MainApplication extends Application{

    private static MainApplication instance;
    private String _sUserId;


    @Override
    public void onCreate(){
        super.onCreate();
        instance=this;
    }

    public static Main Application getInstance(){
        return instance;
    }

    public void setUserId(String s){
        _sUserId=s;
    }

    public String getUserId(){
        return _sUserId;

}

您可以在任何java文件中获取值和设置值,例如

   MainApplication o=((MainApplication)getApplicationContext());
        Integer UserID=o.getUserID();//you need to set user where you want to  to get the value of user id 

答案 1 :(得分:0)

“这可能吗?” - 可能是。如果两个活动在同一个过程中“存在”,您可以从A获取/保持对B的引用,并调用任何公共方法和/或写入任何公共变量。但是:

“我有道理吗?” - 可能:不。对于初学者来说,保持对另一个活动的引用可能意味着你的内存占用量将大于所需(并且可能比你预期的要大:你的活动B可能用于夸大B的布局,如果不是B留在身边)。另外,如果您的活动是由A之外的其他组件启动,您会怎么做?每个这样的组件是否需要引用B才能事先调用必要的公共方法/变量?不是很好。

通常,活动的界面应根据可用于启动它的Intent来描述。其中包括:启动它的操作,应该执行操作的数据,以及设置活动的附加功能。既然你已经说过你知道如何使用Bundles(而另一个,相当不完整,答案给你一个简单的例子)我只会说:为此而去。

答案 2 :(得分:0)

您可以将全局变量与关键字static一起使用。在类中定义您的对象,例如SampleClass,然后在onCreate方法SampleClass.yourObject中调用该变量。