簡體   English   中英

Android:無法將從文件讀取的數據傳遞給多個類

[英]Android: Can't Pass Data Read From File To Multiple Classes

我無法將從文本文件讀取的數據傳遞給應用程序中的另一個類。 我可以從文件中讀取數據,但是我想我需要使用Bundle,但是我不確定該怎么做。 我想讓第二個類處理文本文件中的數據,然后在第一個類中顯示它。

編輯:我想出了如何使用意圖從文件傳遞字符串。 我仍在努力解決一些錯誤。

2nd編輯:我知道有一種更有效的方法。 我可以使它工作的唯一方法是讓MainActivity中的第一個按鈕使用startActivity(intent)來允許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;
    }
}

將以下編輯的代碼用於您的需求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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM