Как хранить и вытащить внутренне на андроид?

1

У меня возникли проблемы с попыткой сохранить внутреннюю строку пользователя на устройствах Android. Мой код написан, чтобы сохранить имя пользователя и прочитать его в строке, а затем отобразить эту строку в текстовом поле тоста. У меня возникают ошибки при создании файла bold_username.txt. Вот мой код:

package hello.tab.widget;



import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class DisclaimerActivity extends Activity
{

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.disclaimer);

final EditText et = (EditText)findViewById(R.id.et_username);
et.setOnClickListener(new View.OnClickListener() {



@Override
public void onClick(View v) {
et.setText("");

}
});

final Button button = (Button) findViewById(R.id.btn_accept);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final CheckBox checkBox = (CheckBox)findViewById(R.id.cb_disclaimer);

if (checkBox.isChecked()) {

String username = et.getText().toString();

String FILENAME = "bold_username.txt";
try {
FileOutputStream fos = new FileOutputStream(new File("bold_username.txt"));
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(username.getBytes());
fos.close();
InputStream inputStream = new FileInputStream("bold_username.txt");
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
total.append(line);
Toast.makeText(DisclaimerActivity.this, line,
Toast.LENGTH_SHORT).show();
}

}


catch (IOException e){
e.printStackTrace();
}

}
else {
Toast.makeText(DisclaimerActivity.this, "Please Check the
Checkbox", Toast.LENGTH_SHORT).show();
}
}
});
}


public void onCheckboxClicked(View v) {
}
}
  • 2
    Пытаетесь разобраться в этом вопросе, но пытались ли вы использовать SharedPreferences, чтобы сделать то же самое? Гораздо проще и рекомендуется, если это просто имя пользователя, которое вы хотите сохранить.
  • 0
    Если на ваш вопрос был дан ответ, или если он больше не действителен, поставьте галочку, чтобы выбрать наиболее подходящий ответ, чтобы все знали, что проблема была решена. Благодарю.
Теги:

2 ответа

0

Если у вас нет причины хранить имя пользователя в файле, лучше использовать SharedPreferences для хранения такой информации. SharedPreferences позволяет вам сохранять настройки и другие общие сведения о вашем приложении, он автоматически доступен для любого класса Activity и обрабатывает все чтение и запись для вас. Значения, хранящиеся в SharedPreferences, доступны только для приложения, которое их создает, поэтому оно также обеспечивает уровень безопасности. SharedPreferences хранятся в файловой системе Android при настройке значений, и они автоматически загружаются всякий раз, когда выполняется ваше приложение.

Вот пример, где вы можете узнать и узнать значение Username в SharedPreferences...

// For reading preferences
SharedPreferences reader = PreferenceManager.getDefaultSharedPreferences(this.getContext());
// For writing preferences
Editor writer = reader.edit();

// Store the username in the preferences
writer.putString("Username","Fred");
writer.commit();

// Get the username from the preferences
String username = reader.getString("Username",""); // the "" at the end says to return "" if the Username isn't set yet

Довольно просто.

0

Попробуй это

//Write the data
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
OutputStreamWriter out = new OutputStreamWriter(fos);
out.write(username);
out.flush();
out.close();

Read the data                   
FileInputStream fis = openFileInput(FILENAME);
InputStreamReader in = new InputStreamReader(fis);
BufferedReader r = new BufferedReader(in);
StringBuilder total = new StringBuilder();
String line;

while ((line = r.readLine()) != null) {
    Log.i("TEMP", line);
    total.append(line);
}
Toast.makeText(MainActivity.this, total.toString(),
    Toast.LENGTH_SHORT).show();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню