Java 如何访问上一个活动中的数据?

Java 如何访问上一个活动中的数据?,java,android,Java,Android,使用StartActivity我从FirstActivity到达了SecondActivity。现在我想访问上一个activity中声明的对象 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {     super.onActivityResult(requestCode, resultCode, data);     //TODO handle here.  } 我

使用
StartActivity
我从FirstActivity到达了SecondActivity。现在我想访问上一个activity中声明的对象

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //TODO handle here. 
}
我不能在我想要传递的对象(DropboxAPI)上使用可分发,因为我没有它的源(我不能使它可分发)

我可以通过
FirstActivity。这是因为我可以使用intent?或类似的方法将其打包

    Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
    intent.putExtra("MyClass",FirstActivity.this);
    startActivity (intent);

import com.dropbox.client2.DropboxAPI;
import com.dropbox.client2.android.AndroidAuthSession;

import android.app.Application;
import android.hardware.Camera.Parameters;
import android.os.Parcel;
import android.os.Parcelable;
public class temp extends Application {

    DropboxAPI<AndroidAuthSession> mApi;
    public void onCreate() {  
        super.onCreate();  
    }

    temp(DropboxAPI<AndroidAuthSession> Api)
    {
        mApi=Api;
    }
    public DropboxAPI<AndroidAuthSession> getName() {    
        return mApi;  
} 
    public void setName(DropboxAPI<AndroidAuthSession> dropboxclient) {  
        this.mApi = dropboxclient;  
}
}
第二类代码:

public void onCreate(Bundle bun) {

    // TODO Auto-generated method stub
    super.onCreate(bun);
    setContentView(R.layout.download);
    mImage = (ImageView)findViewById(R.id.image_view);
    //Bundle gotit=getIntent().getExtras();
    t = (temp)getApplication();
    int i=2;
    i=5;
    dApi=t.getName();
}
日志:

06-28 02:24:31.979: I/System.out(729): debugger has settled (1308)
06-28 02:25:08.387: D/AndroidRuntime(729): Shutting down VM
06-28 02:25:08.387: W/dalvikvm(729): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
06-28 02:25:08.705: E/AndroidRuntime(729): FATAL EXCEPTION: main
06-28 02:25:08.705: E/AndroidRuntime(729): java.lang.ClassCastException: android.app.Application
06-28 02:25:08.705: E/AndroidRuntime(729):  at cloud.mobile.MCActivity$3.onClick(MCActivity.java:164)
06-28 02:25:08.705: E/AndroidRuntime(729):  at android.view.View.performClick(View.java:2408)
06-28 02:25:08.705: E/AndroidRuntime(729):  at android.view.View$PerformClick.run(View.java:8816)
06-28 02:25:08.705: E/AndroidRuntime(729):  at android.os.Handler.handleCallback(Handler.java:587)
06-28 02:25:08.705: E/AndroidRuntime(729):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-28 02:25:08.705: E/AndroidRuntime(729):  at android.os.Looper.loop(Looper.java:123)
06-28 02:25:08.705: E/AndroidRuntime(729):  at android.app.ActivityThread.main(ActivityThread.java:4627)
06-28 02:25:08.705: E/AndroidRuntime(729):  at java.lang.reflect.Method.invokeNative(Native Method)
06-28 02:25:08.705: E/AndroidRuntime(729):  at java.lang.reflect.Method.invoke(Method.java:521)
06-28 02:25:08.705: E/AndroidRuntime(729):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-28 02:25:08.705: E/AndroidRuntime(729):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-28 02:25:08.705: E/AndroidRuntime(729):  at dalvik.system.NativeStart.main(Native Method)
解决方案: 使用StartActivityforResult,将数据移回第二个活动到第一个活动

其中一个示例是数据从第二个活动移动到第一个活动- 解决方案: 使用StartActivityforResult,将数据移回第二个活动到第一个活动

其中一个示例是数据从第二个活动移动到第一个活动- 执行以下操作:

使用
startActivityForResult()启动活动

在开始的活动完成之前,在开始的活动中,创建一个意图,并将任何您想要作为额外内容传回的数据放在意图中。现在调用
setResult(…,intent)

在开始活动中,实现ActivityResult()
,并处理开始活动的结果。将向您传递一个
意图
,该意图是您在已启动活动中添加额外内容的意图

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //TODO handle here. 
}
执行以下操作:

使用
startActivityForResult()启动活动

在开始的活动完成之前,在开始的活动中,创建一个意图,并将任何您想要作为额外内容传回的数据放在意图中。现在调用
setResult(…,intent)

在开始活动中,实现ActivityResult()
,并处理开始活动的结果。将向您传递一个
意图
,该意图是您在已启动活动中添加额外内容的意图

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //TODO handle here. 
}

尝试使用应用程序类:

public class MyApplication extends Application {
    //Variable we want to share to All Activities in Application

    private DropboxClient dropboxclient;  

    @Override 
    public void onCreate() {  
            super.onCreate();  

    }  
    //Getter Method
    public DropboxClient getName() {    
            return dropboxclient;  
    }  
    //Setter Method
    public void setName(DropboxClient dropboxclient) {  
            this.dropboxclient = dropboxclient;  
    }  
}
在MyFirstActivity活动中:

private MyApplication app;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        app = (MyApplication)getApplication();  //Get  Application
        app.setName(dropboxclient);
        Intent intent = new Intent(); 
        intent.setClass(this, MySecondActivity.class);  
        startActivity(intent); 
private MyApplication app;  
    @Override 
    protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);   
            app = (MyApplication)getApplication();  //Get  Application
            DropboxClient dropboxclient=app.getName();//Access global value
在MySecondActivity活动中:

private MyApplication app;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        app = (MyApplication)getApplication();  //Get  Application
        app.setName(dropboxclient);
        Intent intent = new Intent(); 
        intent.setClass(this, MySecondActivity.class);  
        startActivity(intent); 
private MyApplication app;  
    @Override 
    protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);   
            app = (MyApplication)getApplication();  //Get  Application
            DropboxClient dropboxclient=app.getName();//Access global value

尝试使用应用程序类:

public class MyApplication extends Application {
    //Variable we want to share to All Activities in Application

    private DropboxClient dropboxclient;  

    @Override 
    public void onCreate() {  
            super.onCreate();  

    }  
    //Getter Method
    public DropboxClient getName() {    
            return dropboxclient;  
    }  
    //Setter Method
    public void setName(DropboxClient dropboxclient) {  
            this.dropboxclient = dropboxclient;  
    }  
}
在MyFirstActivity活动中:

private MyApplication app;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        app = (MyApplication)getApplication();  //Get  Application
        app.setName(dropboxclient);
        Intent intent = new Intent(); 
        intent.setClass(this, MySecondActivity.class);  
        startActivity(intent); 
private MyApplication app;  
    @Override 
    protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);   
            app = (MyApplication)getApplication();  //Get  Application
            DropboxClient dropboxclient=app.getName();//Access global value
在MySecondActivity活动中:

private MyApplication app;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        app = (MyApplication)getApplication();  //Get  Application
        app.setName(dropboxclient);
        Intent intent = new Intent(); 
        intent.setClass(this, MySecondActivity.class);  
        startActivity(intent); 
private MyApplication app;  
    @Override 
    protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);   
            app = (MyApplication)getApplication();  //Get  Application
            DropboxClient dropboxclient=app.getName();//Access global value

扩展
应用程序
类,声明并初始化该类中的跨活动对象,并为这些对象编写getter

现在在activty中使用以下代码,您可以访问这些对象

getApplication().getMyObject().doSomeAction();

记住,您必须修改您的androidManifest.xml来告诉android您的扩展应用程序类。

扩展
应用程序
类,声明并初始化该类中的跨活动对象,并为这些对象编写getter

现在在activty中使用以下代码,您可以访问这些对象

getApplication().getMyObject().doSomeAction();

请记住,您必须修改您的androidManifest.xml来告诉android您的扩展应用程序类。

在调试模式下app=(MyApplication)getApplication();正在出错。。06-28 02:06:17.066:E/AndroidRuntime(699):java.lang.ClassCastException:android.app。Application@AmelJose:并确保已将应用程序类添加到manifast.xml中对不起,这对清单有效吗?temp是应用程序类的名称如果您在实现应用程序类时遇到任何问题,那么只需在调试模式app=(MyApplication)getApplication()下下载这个简单的示例即可;正在出错。。06-28 02:06:17.066:E/AndroidRuntime(699):java.lang.ClassCastException:android.app。Application@AmelJose:并确保已将应用程序类添加到manifast.xml中对不起,这对清单有效吗?temp是应用程序类的名称如果您在实现应用程序类时遇到任何问题,请下载这个简单的示例