我的应用程序没有显示内部存储器中的数据

时间:2016-12-23 08:24:06

标签: java android

我们正在开发一个没有在内部存储器中显示数据的应用程序。

我们实际上认为错误在方法show和array中,但无法弄清楚在哪里。如果您能帮助我们解决这个问题,我们将不胜感激。

这是logcat。

enter image description here

和我们的代码

public class DBActivity extends AppCompatActivity {

    TextView name1 , surname1 , idnumber1;
    @Override
    protected  void  onCreate(Bundle saveInstanceState){
        super.onCreate(saveInstanceState);
        setContentView(R.layout.activity_db);
        name1 = (TextView)findViewById(R.id.name);
        surname1 = (TextView)findViewById(R.id.surname);
        idnumber1 = (TextView)findViewById(R.id.idnumber);
    }


    public void show(View view){


        try {
            FileInputStream fileInputStream = openFileInput("Rank It Up.txt");

            int read = -1;
            StringBuffer buffer = new StringBuffer();
            while ((read=fileInputStream.read()) != -1)
            {
                buffer.append((char) read);
            }


            Log.d("Rank It Up",buffer.toString());

            String m = buffer.toString();
            String[] data = m.split(" ");

            String name2       = data[0];
            String surname2    = data[1];
            String idnumber2   = data[2];

            name1.setText(name2);
            surname1.setText(surname2);
            idnumber1.setText(idnumber2);



        } catch (FileNotFoundException e) {
            Toast.makeText(this, "File Not Found", Toast.LENGTH_LONG).show();


        } catch (IOException e){
            e.printStackTrace();
        }
        Toast.makeText(this, "Data found", Toast.LENGTH_LONG).show();

    }

    public void back(View view){
        Toast.makeText(this, "Main page",Toast.LENGTH_LONG).show();
        Intent intent = new Intent(this, profile.class);
        startActivity(intent);

    }
}

1 个答案:

答案 0 :(得分:0)

错误很明显。您在ArrayIndexOutOfBounds方法中收到show个例外。

这个代码块很可能就在这里:

        String[] data = m.split(" ");

        String name2       = data[0];
        String surname2    = data[1];
        String idnumber2   = data[2];

代码在访问之前没有检查“数据”的长度。这反过来:

    String[] data = m.split(" ");
    String name2 = (data.length > 0) ? data[0] : "";
    String surname2 = (data.length > 1) ? data[1] : "";
    String idnumber2 = (data.length > 2) ? data[2] : "";

为什么你没有得到你期望的格式的字符串,这是一个单独的调试问题。