Как загрузить данные в мою таблицу при запуске приложения? - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь загрузить данные в таблицу по отдельному фрагменту.У меня есть данные в текстовом файле, затем они преобразуются в массивы, они работают, но я не могу заставить их работать, когда пытаюсь заставить их работать при запуске.Я думаю, что моя проблема, когда я вызываю метод loadData, но я могу ошибаться.Я вызываю его внутри MainActivity.

Я получаю ошибку:

java.lang.NullPointerException: попытка вызвать виртуальный метод void android.widget.TableLayout.addView (android.view.View) 'для нулевой ссылки на объект

Вот мой метод загрузки данных:

public void loadData() {
    //Accounts
    File path = Environment.getExternalStorageDirectory();
    File myExternalFile = new File(path.getAbsolutePath() + "/App_Folder/", "accounts.txt");
    try {
        FileInputStream fis = new FileInputStream(myExternalFile);
        DataInputStream in = new DataInputStream(fis);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));

        String strLine;
        while ((strLine = br.readLine()) != null) {
            accounts.add(strLine);
        }
        br.close();
        in.close();
        fis.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    for (int i = 0; i < accounts.size(); i++) {
        String[] splitArray = accounts.get(i).split("//");

        String accountNameText = splitArray[0];
        String amountSavedText = splitArray[1];
        String goalText = splitArray[2];
        String percentText = splitArray[3];

        // get a reference for the TableLayout
        TableLayout table = (TableLayout) findViewById(R.id.accountTable);

        // create a new TableRow
        TableRow row = new TableRow(this);

        TextView accountName = new TextView(this);
        accountName.setText(accountNameText);

        TextView amountSaved = new TextView(this);
        amountSaved.setText(amountSavedText);

        TextView accountGoal = new TextView(this);
        accountGoal.setText(goalText);

        TextView accountPercent = new TextView(this);
        accountPercent.setText(percentText);

        row.addView(accountName);
        row.addView(amountSaved);
        row.addView(accountGoal);
        row.addView(accountPercent);

        table.addView(row);
    }
}

1 Ответ

0 голосов
/ 26 ноября 2018

Вы можете продолжить этот путь внутри своего фрагмента (этот код только для примера):

public class MyFragment extends Fragment {
 View view;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view= inflater.inflate(R.layout.myfragment_view, container, false);

        //call loaddata

        loadData();
        return view;
    }
 public void loadData() {
File path = Environment.getExternalStorageDirectory();
File myExternalFile = new File(path.getAbsolutePath() + "/App_Folder/", "accounts.txt");
try {
    FileInputStream fis = new FileInputStream(myExternalFile);
    DataInputStream in = new DataInputStream(fis);
    BufferedReader br = new BufferedReader(new InputStreamReader(in));

    String strLine;
    while ((strLine = br.readLine()) != null) {
        accounts.add(strLine);
    }
    br.close();
    in.close();
    fis.close();
} catch (IOException e) {
    e.printStackTrace();
}

for (int i = 0; i < accounts.size(); i++) {
    String[] splitArray = accounts.get(i).split("//");

    String accountNameText = splitArray[0];
    String amountSavedText = splitArray[1];
    String goalText = splitArray[2];
    String percentText = splitArray[3];

    // get a reference for the TableLayout, 
    TableLayout table = (TableLayout)view.findViewById(R.id.accountTable);

    // create a new TableRow
    TableRow row = new TableRow(getContext());

    TextView accountName = new TextView(getContext());
    accountName.setText(accountNameText);

    TextView amountSaved = new TextView(getContext());
    amountSaved.setText(amountSavedText);

    TextView accountGoal = new TextView(getContext());
    accountGoal.setText(goalText);

    TextView accountPercent = new TextView(getContext());
    accountPercent.setText(percentText);

    row.addView(accountName);
    row.addView(amountSaved);
    row.addView(accountGoal);
    row.addView(accountPercent);

    table.addView(row);
}}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...