2014-09-05 79 views
0

我正在尝试在Android项目中进行登录验证。我想将活动中的cookie传递给activity。要传递cookie,我创建了一个应用程序class.Here是应用程序类;如何将参数活动传递给活动

public class TestApplication extends Application{ 

    public Cookie tempClass; 

    public TestApplication() { 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate() { 
     // TODO Auto-generated method stub 
     super.onCreate(); 
    } 

    public Cookie getTempClass() { 
     return tempClass; 
    } 

    public void setTempClass(Cookie tempClass) { 
     this.tempClass = tempClass; 
    } 

}

,我试图在这里的活动使用;

public void run() { 
         // TODO Auto-generated method stub   
         //String sessionId=""; 
         Cookie userCookie=null; 
         List<Cookie> cookies = ((AbstractHttpClient) httpClient).getCookieStore().getCookies(); 
         if (cookies.isEmpty()) { 
           System.out.println("None"); 
          } else { 
           for (int i = 0; i < cookies.size(); i++) { 
            //System.out.println("-Cokkkiiieee " + cookies.get(i).toString()); 
            userCookie =cookies.get(i); 
           } 
           testAppObj = (TestApplication)getApplication(); 
           testAppObj.setTempClass(userCookie); 
           Intent menu = new Intent("android.intent.action.MENU"); 
           startActivity(menu); 
          } 
        } 


      }; 
       (new Thread(runnable)).start();    

logcat中所示:

FATAL EXCEPTİON : Thread-9 
java.lang.ClassCastException : android.app.Application 
at com.example.example.MainActivity$2.run(MainActivity.java:176) 
at java.lang.Thread.Run(Thread.java:1096) 
+0

[这](http://stackoverflow.com/a/5575072/1777090 )?否则你也可以使用Application类来保持cookie。所以你可以跨活动访问它们。 – 2014-09-05 11:23:40

+0

有没有任何方法可以在Bundle之外的活动之间传递这个cookie? – dodotu 2014-09-05 11:44:01

+0

请参阅[this](http://stackoverflow.com/a/25665595/1777090)。您可以保存这样的cookie,稍后再从应用程序类中检索。 – 2014-09-05 11:46:35

回答

0

您可以使用应用程序类在许多活动访问同一个对象。

public class TestApplication extends Application { 

    //Object declaration 

    public TestApplication() { 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate() { 
     // TODO Auto-generated method stub 
     super.onCreate(); 
    } 

    //setter getter for object 
} 

现在,在您的活动:

//after setContentView 
TestApplication testAppObj = (TestApplication) getApplication(); 
testAppObj.setSomeObj(myObj); 

//retrieve as: 
someObj = testAppObj.getterMethodOfObj(); 

希望这有助于。

PS:

就像您注册活动,您必须在清单文件注册您的应用程序类:

<application 
     android:name="com.pkg.test.TestApplication " /> 
相关问题