Member 10627743 Ответов: 3

Как читать текстовые файлы из папки assets в соответствии с датой и временем


Я разрабатываю мотивационное приложение, которое имеет разные words.txt/texts.txt файлы на каждый день, то есть 365 файлов.
я сохранил все файлы .txt в папке активов моего проекта и перенес их в текстовое представление. что я хотел бы, чтобы пользователи читали разные файлы/темы в день:

а) я хотел бы разработать приложение таким образом, чтобы каждое сообщение (текстовый файл) дня было
быть показанным пользователю автоматически после заставки, без того, чтобы пользователь имел
чтобы перейти к сообщению дня.

Но когда я запускаю приложение, оно показывает пустоту

смотрите мой код ниже

public class MainActivity extends ActionBarActivity {

    private NavDrawerListAdapter adapter;
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private CharSequence mDrawerTitle;
    private ActionBarDrawerToggle mDrawerToggle;
    private CharSequence mTitle;
    private ArrayList<navdraweritem> navDrawerItems;
    private TypedArray navMenuIcons;
    private String[] navMenuTitles;

    private void displayView(final int selection) {
        Fragment fragment = null;
        switch (selection) {
            case 0: {
                fragment = new FragmentDailyDevotion();
                break;
            }
            case 1: {
                fragment = new FragmentBibleInAYear();
                break;
            }
            case 2: {
                fragment = new FragmentBookmarks();
                break;
            }
            case 3: {
                fragment = new FragmentAboutAuthor();
                break;
            }
            case 4: {
                fragment = new FragmentVideos();
                break;
            }
            case 5: {
                fragment = new FragmentAudio();
                break;
            }
            case 6: {
                fragment = new FragmentGlossary();
                break;
            }
            case 7: {
                fragment = new FragmentMoreInformation();
                break;
            }
            case 8: {
                fragment = new FragmentNeedHelp();
                break;
            }
        }
        if (fragment != null) {
            final android.support.v4.app.FragmentManager fragmentManager = this.getSupportFragmentManager();
            fragmentManager.popBackStack((String)null, 1);
            fragmentManager.beginTransaction().replace(R.layout.daily_devotion, fragment).addToBackStack((String)null).commit();
            this.mDrawerList.setItemChecked(selection, true);
            this.mDrawerList.setSelection(selection);
            this.setTitle("MyApp");
            this.mDrawerLayout.closeDrawer((View)this.mDrawerList);
        }
    }

}

public class FragmentDailyDevotion extends Fragment
{
    String DevotionTitle;
    Context ThisContext;
    //private View$OnClickListener btnListener;
    Calendar c;
    private DatePickerDialog dialog;
    Fragment fragment;
    ImageButton imgBookmark;
    ImageButton imgBookmarked;
    ImageButton imgCalendar;
    ImageButton imgNext;
    ImageButton imgPrev;
    ImageButton imgSettings;
    ImageButton imgShare;
    TextView lblDate;
    TextView lblText;
    TextView lblTitle;
    int mDay;
    int mMonth;
    int mYear;
    ScrollView scrMiddle;

    public FragmentDailyDevotion() {
        super();
        this.ThisContext = null;
        this.fragment = null;
        this.c = Calendar.getInstance();
        this.dialog = null;
        /*this.btnListener = (View$OnClickListener)new View$OnClickListener() {
            public void onClick(final View view) {
                if (view == FragmentDailyDevotion.this.lblDate) {
                    FragmentDailyDevotion.this.ShowCalendar();
                }
                if (view == FragmentDailyDevotion.this.imgPrev) {
                    FragmentDailyDevotion.this.DoPrevious();
                }
                if (view == FragmentDailyDevotion.this.imgNext) {
                    FragmentDailyDevotion.this.DoNext();
                }
                if (view == FragmentDailyDevotion.this.imgCalendar) {
                    FragmentDailyDevotion.this.ShowCalendar();
                }
                if (view == FragmentDailyDevotion.this.imgBookmark) {
                    FragmentDailyDevotion.this.DoBookmark();
                }
                if (view == FragmentDailyDevotion.this.imgBookmarked) {
                    FragmentDailyDevotion.this.DoUnbookmark();
                }
                if (view == FragmentDailyDevotion.this.imgShare) {
                    final Intent intent = new Intent();
                    final String getShareDevotionText = GlobalV.GetShareDevotionText(FragmentDailyDevotion.this.mMonth, FragmentDailyDevotion.this.mDay, FragmentDailyDevotion.this.mYear, FragmentDailyDevotion.this.DevotionTitle);
                    intent.setAction("android.intent.action.SEND");
                    intent.setType("text/plain");
                    intent.putExtra("android.intent.extra.TEXT", getShareDevotionText);
                    FragmentDailyDevotion.this.startActivity(Intent.createChooser(intent, (CharSequence) ("Share " + GlobalV.globalAppName)));
                }
                if (view == FragmentDailyDevotion.this.imgSettings) {
                    FragmentDailyDevotion.this.fragment = new FragmentSettings();
                    FragmentDailyDevotion.this.ShowNewFragment();
                }
            }
        };*/
    }

   

    /*public void ShowCalendar() {
        if (this.dialog == null) {
            this.dialog = new DatePickerDialog(this.ThisContext, (DatePickerDialog$OnDateSetListener)new PickDate((PickDate)null), this.mYear, this.mMonth, this.mDay);
        }
        this.dialog.show();
    }*/
	
	public void ShowNewFragment() {
        if (this.fragment != null) {
            this.getFragmentManager().beginTransaction().replace(R.id.lblText, this.fragment).addToBackStack((String)null).commit();
        }
    }

    public String getTextFile(final int n, final int n2) {
        String s = null;
        switch (n) {
            default: {
                s = "devotion/january" + Integer.toString(n2);
                break;
            }
            case 0: {
                s = "devotion/january" + Integer.toString(n2);
                break;
            }
            case 1: {
                s = "devotion/february" + Integer.toString(n2);
                break;
            }
            case 2: {
                s = "devotion/march" + Integer.toString(n2);
                break;
            }
            case 3: {
                s = "devotion/april" + Integer.toString(n2);
                break;
            }
            case 4: {
                s = "devotion/may" + Integer.toString(n2);
                break;
            }
            case 5: {
                s = "devotion/june" + Integer.toString(n2);
                break;
            }
            case 6: {
                s = "devotion/july" + Integer.toString(n2);
                break;
            }
            case 7: {
                s = "devotion/august" + Integer.toString(n2);
                break;
            }
            case 8: {
                s = "devotion/september" + Integer.toString(n2);
                break;
            }
            case 9: {
                s = "devotion/october" + Integer.toString(n2);
                break;
            }
            case 10: {
                s = "devotion/november" + Integer.toString(n2);
                break;
            }
            case 11: {
                s = "devotion/december" + Integer.toString(n2);
                break;
            }
        }
        return s.trim();
    }

    public String loadTextFile(final InputStream inputStream) throws IOException {
        final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        final byte[] array = new byte[4096];
        while (true) {
            final int read = inputStream.read(array);
            if (read <= 0) {
                break;
            }
            byteArrayOutputStream.write(array, 0, read);
        }
        return new String(byteArrayOutputStream.toByteArray(), "UTF8");
    }

    public void loadWebView(final int n, final int n2, final int n3) {
        this.ShowDateHeader();
    }

    public View onCreateView(final LayoutInflater layoutInflater, final ViewGroup viewGroup, final Bundle bundle) {
        final View inflate = layoutInflater.inflate(R.layout.daily_devotion, viewGroup, false);
        this.ThisContext = (Context)this.getActivity();
        if (GlobalV.globalGlossaryYear != 0 && GlobalV.globalGlossaryMonth != 0 && GlobalV.globalGlossaryDay != 0) {
            this.mYear = GlobalV.globalGlossaryYear;
            this.mMonth = GlobalV.globalGlossaryMonth;
            this.mDay = GlobalV.globalGlossaryDay;
            GlobalV.globalGlossaryYear = 0;
            GlobalV.globalGlossaryMonth = 0;
            GlobalV.globalGlossaryDay = 0;
            GlobalV.globalSelectedYear = this.mYear;
            GlobalV.globalSelectedMonth = this.mMonth;
            GlobalV.globalSelectedDay = this.mDay;
        }
        else if (GlobalV.globalSelectedYear != 0 && GlobalV.globalSelectedMonth != 0 && GlobalV.globalSelectedDay != 0) {
            this.mYear = GlobalV.globalSelectedYear;
            this.mMonth = GlobalV.globalSelectedMonth;
            this.mDay = GlobalV.globalSelectedDay;
        }
        else {
            this.mYear = this.c.get(Calendar.YEAR);
            this.mMonth = this.c.get(Calendar.MONTH);
            this.mDay = this.c.get(Calendar.DAY_OF_MONTH);
        }
        this.scrMiddle = (ScrollView)inflate.findViewById(R.id.scrMiddle);
        (this.lblText = (TextView)inflate.findViewById(R.id.lblText)).setText((CharSequence) "");
        //(this.lblDate = (TextView)inflate.findViewById(R.id.lblDate)).setOnClickListener(this.btnListener);
        this.lblTitle = (TextView)inflate.findViewById(R.id.lblTitle);
        /*(this.imgPrev = (ImageButton)inflate.findViewById(R.id.imgPrev)).setOnClickListener(this.btnListener);
        (this.imgNext = (ImageButton)inflate.findViewById(R.id.imgNext)).setOnClickListener(this.btnListener);
        (this.imgCalendar = (ImageButton)inflate.findViewById(2131361818)).setOnClickListener(this.btnListener);
        (this.imgBookmark = (ImageButton)inflate.findViewById(2131361819)).setOnClickListener(this.btnListener);
        (this.imgBookmarked = (ImageButton)inflate.findViewById(2131361820)).setOnClickListener(this.btnListener);
        (this.imgShare = (ImageButton)inflate.findViewById(2131361821)).setOnClickListener(this.btnListener);
        (this.imgSettings = (ImageButton)inflate.findViewById(2131361822)).setOnClickListener(this.btnListener);*/
        this.DoSettings();
        this.prepWebView();
        return inflate;
    }

    public void prepWebView() {
        this.ShowDateHeader();
    }

    /*private class PickDate implements DatePickerDialog$OnDateSetListener
    {
        public void onDateSet(final DatePicker datePicker, final int mYear, final int mMonth, final int mDay) {
            FragmentDailyDevotion.this.mYear = mYear;
            FragmentDailyDevotion.this.mMonth = mMonth;
            FragmentDailyDevotion.this.mDay = mDay;
            if (mYear != GlobalV.globalDevotionYear) {
                GlobalV.AssetDialog("Invalid Year Selected. Only Year " + GlobalV.globalDevotionYear + " is permitted", FragmentDailyDevotion.this.ThisContext).create().show();
            }
            else {
                FragmentDailyDevotion.this.loadWebView(mMonth, mDay, mYear);
            }
        }
    }*/
}


Пожалуйста, помогите

Что я уже пробовал:

Спросил на sitepoint и пока никакого ответа

[no name]

Окей.... помочь в чем? Запустите код в отладчике и отладьте свой код.

Suvendu Shekhar Giri

Совместное использование всего кода не поможет нам определить проблему. Вам нужно отладить и определить проблемный блок кода.

3 Ответов

Рейтинг:
2

Patrice T

По крайней мере, используйте отладчик, чтобы сузить исследование. У нас нет вашего полного проекта, и некоторые помощники не используют Java.

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
1

Member 12828042

Эй,


Вы должны использовать

getAssets()
метод, когда вы хотите вызвать intrant класс activity.

однако если вы хотите использовать этот метод из контекста, который он исходит из класса activity,
вы можете использовать это, чтобы получить к нему доступ.

ContextInstance.getAssets();


Рейтинг:
1

David Crow

Я бы сказал, что 90% кода, который вы показали, не имеет значения. Сократите его до того, что необходимо для демонстрации проблемы. В противном случае большинство людей не потрудятся пройти через все это.