Когда я пытаюсь прочитать файл в MainActivity, он кажется пустым, в то время как другие действия могут прочитать созданный файл. - PullRequest
0 голосов
/ 11 июня 2018

Проблема - когда я пытаюсь прочитать файл LoginCredentials.txt, он по какой-то причине оказывается пустым. Другие действия могут прочитать его, но не MainActivity.Это может быть из-за кода CheckFirstTimeRun, который я использую в onCreate of MainActivity, но я не уверен.

Это класс CreateUserID.class, из которого я создаю файл,

public class CreateUserID extends AppCompatActivity {

private EditText usernameField;
private EditText passwordField;

public String userid;
public String userpass;

private final String File_Name = "LoginCredentials.txt";

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_create_user_id);

    usernameField = (EditText)findViewById(R.id.Username);
    passwordField = (EditText)findViewById(R.id.Password);

}
public void MakeAccount(View v) throws IOException {

    userid = usernameField.getText().toString();
    userpass = passwordField.getText().toString();

    String x=null;
    x=userid+userpass;

    FileOutputStream fos = null;
    try {
        fos = openFileOutput(File_Name,MODE_PRIVATE);
        fos.write(x.getBytes());
    } catch(FileNotFoundException e) {
        e.printStackTrace();
    } catch(Exception e) {
        e.printStackTrace();
    }
    finish();
}
}

А вот класс MainActivity.class, который должен читать файл.

public class MainActivity extends AppCompatActivity {

protected EditText Authentication_Username;
protected EditText Authentication_Password;
protected String File_Name = "LoginCredentials.txt";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SharedPreferences wmbPreference = PreferenceManager
            .getDefaultSharedPreferences(this);
    boolean isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);
    if (isFirstRun)
    {

        Intent k = new Intent(this,CreateUserID.class);
        startActivity(k);

        SharedPreferences.Editor editor = wmbPreference.edit();
        editor.putBoolean("FIRSTRUN", false);
        editor.commit();
    }

}

public void Verify_User(View v) {
    Authentication_Username=(EditText)findViewById(R.id.Username);
    Authentication_Password=(EditText)findViewById(R.id.Password);

    String Match_Username = Authentication_Username.getText().toString();
    String Match_Password = Authentication_Password.getText().toString();

    String Collected = null;

    FileInputStream fis;
    try {
        fis = new FileInputStream(File_Name);
        byte[] a = new byte[fis.available()];
        while(fis.read(a)!=-1) {
            Collected = new String(a);
        }
    } catch(Exception e) {
        e.printStackTrace();
    }
    Toast.makeText(MainActivity.this,Collected,Toast.LENGTH_LONG).show();
}
}

1 Ответ

0 голосов
/ 11 июня 2018

изменить String Collected = null; на StringBuilder sb = new StringBuilder();
и Collected = new String(a); на sb.append(new String(a));, затем передать sb.toString() в метод Toast.makeTest()

...