Android: невозможно передать данные, прочитанные из файла, нескольким классам - PullRequest
0 голосов
/ 01 апреля 2012

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

Редактировать: я выяснил, как передать строку из файла, используянамерениеЯ все еще работаю над исправлением некоторых ошибок.

2nd Edit: я знаю, что есть более эффективный способ сделать это.Единственный способ заставить его работать, это заставить первую кнопку в MainActivity использовать startActivity (намерение), чтобы позволить secondActivity связать строку, прочитанную из файла.

MainActivity.java:

public class MainActivity extends Activity {

    Button btn;
    Button bReadFile;
    TextView tvRead;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btn = (Button) findViewById(R.id.btnNext);
        bReadFile = (Button) findViewById(R.id.btnRead);
        tvRead = (TextView) findViewById(R.id.tvMain);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //trying to find a way to remove this button
                Intent intent = new Intent(MainActivity.this, econdActivity.class);
                startActivity(intent);
            }
        });

        bReadFile.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String value = getIntent().getExtras().getString("key");
                tvRead.setText(value);
            }
        });
    }
}

secondActivity.java:

public class secondActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent mIntent = new Intent(secondActivity.this, MainActivity.class);
        mIntent.putExtra("key", readDataFile());
        startActivity(mIntent);
    }

    public String readDataFile() {
        String strData = null;
        InputStream is = null;
        try {
            is = getResources().openRawResource(R.raw.data_text);
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            strData = br.readLine();
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return strData;
    }
}

1 Ответ

0 голосов
/ 01 апреля 2012

Используйте приведенный ниже отредактированный код для вашего требования MainActivity.java

public class MainActivity extends Activity {

    Button btn;
    Button bReadFile;
    TextView tvRead;
    String value;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btn = (Button) findViewById(R.id.btnNext);
        bReadFile = (Button) findViewById(R.id.btnRead);
        tvRead = (TextView) findViewById(R.id.tvMain);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //trying to find a way to remove this button
                Intent intent = new Intent(MainActivity.this, secondActivity.class);
                startActivityForResults(intent,0);
            }
        });

        bReadFile.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                tvRead.setText(value);
            }
        });
    }
    @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data){
       value = data.getStringExtra("key");
}
}

код для secondActivity.java

public class secondActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent i = new Intent();
    i.putExtra("key", readDataFile());
    setResult(RESULT_OK, i);
    finish();
    }

    public String readDataFile() {
        String strData = null;
        InputStream is = null;
        try {
            is = getResources().openRawResource(R.raw.data_text);
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            strData = br.readLine();
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return strData;
    }
}
...