Cделал заметку но приложение компилируется и не запускается
Вот MainActivity
public abstract class MainActivity extends ActionBarActivity{
private final static String FILENAME = "sample.txt";
private EditText mEditText;
private Context context;
public class CrimeActivity extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_main, container, false);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_main,menu);
final MenuItem item = menu.findItem(R.id.action_open);
mEditText = (EditText) mEditText.findViewById(R.id.editText);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_open:
openFile(FILENAME);
return true;
case R.id.action_save:
saveFile(FILENAME);
return true;
case R.id.action_settings:
Intent intent = new Intent();
intent = intent.setClass(context, SettingsActivity.class);
context.startActivity(intent);
return true;
default:
return true;
}
}
// Метод для открытия файла
private void openFile(String fileName) {
try {
InputStream inputStream = context.getApplicationContext().openFileInput(fileName);
if (inputStream != null) {
InputStreamReader isr = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(isr);
String line;
StringBuilder builder = new StringBuilder();
while ((line = reader.readLine()) != null) {
builder.append(line + "\n");
}
inputStream.close();
mEditText.setText(builder.toString());
}
} catch (Throwable t) {
Toast.makeText(context.getApplicationContext(),
"Exception: " + t.toString(), Toast.LENGTH_LONG).show();
}
}
// Метод для сохранения файла
private void saveFile(String fileName) {
try {
OutputStream outputStream = context.openFileOutput(fileName, 0);
OutputStreamWriter osw = new OutputStreamWriter(outputStream);
osw.write(mEditText.getText().toString());
osw.close();
} catch (Throwable t) {
Toast.makeText(context.getApplicationContext(),
"Exception: " + t.toString(), Toast.LENGTH_LONG).show();
}
}
public void onResume() {
context.getApplicationContext();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
// читаем установленное значение из CheckBoxPreference
if (prefs.getBoolean(context.getString(R.string.pref_openmode), false)) {
openFile(FILENAME);
}
float fSize = Float.parseFloat(prefs.getString(
context.getString(R.string.pref_size), "20"));
// применяем настройки в текстовом поле
mEditText.setTextSize(fSize);
String regular = prefs.getString(context.getString(R.string.pref_style), "");
int typeface = Typeface.NORMAL;
if (regular.contains("Полужирный"))
typeface += Typeface.BOLD;
if (regular.contains("Курсив"))
typeface += Typeface.ITALIC;
// меняем настройки в EditText
mEditText.setTypeface(null, typeface);
}
}
А вот сам текстовый редактор обучалка.
Ответы (1 шт):
Вообще довольно странный класс у вас получается. У вас активность:
public abstract class MainActivity extends ActionBarActivity
в которой фрагмент:
public class CrimeActivity extends Fragment
а это совсем неправильно насколько я знаю. Если обратимся к примеру который на сайте то там есть активность без фрагмента, следовательно вы зачем-то вставили еще и фрагмент внутрь класса активности. Так же в активности должен быть переопределен метод:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditText = (EditText) findViewById(R.id.editText);
}
в котором будут инициализированы виджеты разметки. Поэтому я бы вам предложил еще раз внимательно просмотреть пример который вы используете, и сделать все идентично. Когда приложение запустится (а судя по скриншотам на сайте оно запускается) то вы уже сможете понять что именно хотите изменить. Так же у вас в функции onCreateOptionsMenu инициализировано поле для ввода, в то время как пример говорит об инициализации в методе onCreate().
