Страница 1 из 1

Fragment

Добавлено: 11 июл 2015, 20:05
GoOoRoOo21
Пишу простенькую прогу с Fragment-ами. Создал xml где есть editText. Мне нужно чтобы при нажатии на кнопку сохранялся текст что написал пользователь. Код для этого у меня есть, но он не предназначен для Fragment.

Вот код:

Код: Выделить всё


public class Fragment1 extends Fragment implements qwerty, View.OnClickListener {


    private final static String FILENAME = "sample.txt"; // имя файла
    private EditText mEditText;

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {

            case R.id.action_save:
                saveFile(FILENAME);
                return true;
            case R.id.action_settings:
                Intent intent = new Intent();
                intent.setClass(this, SettingsActivity.class);
                startActivity(intent);
                return true;
            default:
                return true;
        }

    }



    private void saveFile(String fileName) {
        try {
            OutputStream outputStream = openFileOutput(fileName, 0);
            OutputStreamWriter osw = new OutputStreamWriter(outputStream);
            osw.write(mEditText.getText().toString());
            osw.close();
        } catch (Throwable t) {
            Toast.makeText(getApplicationContext(),
                    "Exception: " + t.toString(), Toast.LENGTH_LONG).show();
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(this);

        // читаем размер шрифта из EditTextPreference
        float fSize = Float.parseFloat(prefs.getString(
                getString(R.string.pref_size), "20"));
// применяем настройки в текстовом поле
        mEditText.setTextSize(fSize);

        // читаем стили текста из ListPreference
        String regular = prefs.getString(getString(R.string.pref_style), "");
        int typeface = Typeface.NORMAL;

        if (regular.contains("Полужирный"))
            typeface += Typeface.BOLD;

        if (regular.contains("Курсив"))
            typeface += Typeface.ITALIC;

        mEditText.setTypeface(null, typeface);

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

}

И поэтому выскакивает ошибка в слове "openFileOutput" :

Код: Выделить всё


private void saveFile(String fileName) {
        try {
            OutputStream outputStream = openFileOutput(fileName, 0);
            OutputStreamWriter osw = new OutputStreamWriter(outputStream);
            osw.write(mEditText.getText().toString());
            osw.close();
        } catch (Throwable t) {
            
        }
    }

Как преобразовать его под Fragment?? Буду очень благодарен! :D

Re: Fragment

Добавлено: 11 июл 2015, 21:22
Dark67
getActivity().openFileOutput(fileName, 0);

Re: Fragment

Добавлено: 12 июл 2015, 08:43
GoOoRoOo21
Dark67 писал(а):getActivity().openFileOutput(fileName, 0);

Спасибо!! Все исправил :lol: . Но есть одна загвоздка. Код описан чтобы он сохранялся при нажатии на элемент в menu. А мне нужно чтобы при нажатии на кнопку. Вы знаете как это сделать?

Re: Fragment

Добавлено: 12 июл 2015, 11:01
Dark67
Создать кнопку, назначить ей слушателя и в слушателе прописать нужный код.

Но я настоятельно советую, как можно больше читать! Впервую очередь понять теорию, попутно овладевая навыками программирования. Ты задаешь слишком много однотипных, а порой и совершенно идентичных вопросов. Не видно прогресса! Попробуй почитать это http://www.ozon.ru/context/detail/id/24301926/