0

当我们启动一个活动时,无论如何都可以访问类的对象,以便我可以调用类中的设置数据。就像是

  Intent intent=new Intent (a.this, b.class);
  startActivity(intent);

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

亲切的问候,

4

3 回答 3

0

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

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

通常,应根据可用于启动它的 Intent 来描述活动的界面。这包括:启动它的操作、应该对其执行操作的数据以及设置活动的附加信息。既然您已经说过您知道如何使用捆绑包(另一个相当不完整的答案为您提供了一个简单的示例),我只会说:去吧。

于 2012-09-24T07:38:23.997 回答
0

这将是您的清单,此类可用于设置值,然后在任何项目 java 类中获取值

<?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 
于 2012-09-24T07:26:22.797 回答
0

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

于 2012-09-24T08:11:46.377 回答