Android класс для обмена данными в деятельности проблемы - PullRequest
1 голос
/ 21 апреля 2011

У меня есть следующий код, с которым я хотел бы, чтобы данные были сохранены и возвращали истину или ложь при необходимости:

public class DataHolder extends Application {
private long NextRestoreTime = 0;

public boolean getNextResotreTime()
{
    if (System.currentTimeMillis() >= NextRestoreTime) 
    {
        return true;
    }
    else
    {
        return false;
    }
}
public void setRestoreTime(long RestoreTime)
{
    if(NextRestoreTime == 0)
    {
        NextRestoreTime = RestoreTime;
    }
    else
    {
        if(RestoreTime < NextRestoreTime)
        {
            NextRestoreTime = RestoreTime;
        }
    }
}
}

Как я могу получить доступ к данным из других классов?

Теперь я должен установить так:

DataHolder dataHolder = ((DataHolder)getApplicationContext());

Но я понятия не имею, как это сделать в ListAdapter

public class CurrentAdapter extends ArrayAdapter<CurrentlyItem> { ...

Я на правильном пути, или есть лучший способ?

Спасибо за помощь!


Просто сделав

DataHolder dataHolder = ((DataHolder)getApplicationContext());

Я получаю

04-21 14:40:24.361: ERROR/AndroidRuntime(697): FATAL EXCEPTION: main
04-21 14:40:24.361: ERROR/AndroidRuntime(697): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.TVSpored/com.TVSpored.Currently}: java.lang.ClassCastException: android.app.Application
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.app.ActivityThread.startActivityNow(ActivityThread.java:2503)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:651)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.widget.TabHost.setCurrentTab(TabHost.java:323)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:129)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:453)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.view.View.performClick(View.java:2408)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.view.View$PerformClick.run(View.java:8816)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.os.Handler.handleCallback(Handler.java:587)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.os.Looper.loop(Looper.java:123)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.app.ActivityThread.main(ActivityThread.java:4627)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at java.lang.reflect.Method.invokeNative(Native Method)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at java.lang.reflect.Method.invoke(Method.java:521)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at dalvik.system.NativeStart.main(Native Method)
04-21 14:40:24.361: ERROR/AndroidRuntime(697): Caused by: java.lang.ClassCastException: android.app.Application
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at com.TVSpored.Currently.onCreate(Currently.java:47)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-21 14:40:24.361: ERROR/AndroidRuntime(697):     ... 18 more

Активность в манифесте

<activity android:name=".DataHolder"></activity>

Ответы [ 2 ]

0 голосов
/ 21 апреля 2011

Вы на правильном пути для этого, вам просто нужно поместить этот атрибут манифеста под тегом Application вместо тега Activity (поскольку DataHolder на самом деле не Activity), например:

<application android:name=".DataHolder" //...:icon and :label to follow >
0 голосов
/ 21 апреля 2011

Я бы предложил использовать что-то вроде общих настроек для этого, так как операционная система Android может убивать и перезапускать ваше приложение по желанию, поэтому, если вы просто используете статическую переменную, она может быть сброшена на вас.Посмотрите документацию по хранению данных .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...