2012-03-31 3 views
0

テキストファイルから読み込んだデータをアプリケーションの別のクラスに渡す際に問題があります。ファイルから読み込むことはできますが、バンドルを使う必要があると思いますが、どうやってそれを行うのかは分かりません。 2番目のクラスでテキストファイルのデータを処理して、それを最初のクラスに表示したいと思います。Android:データをファイルから複数のクラスに読み込むことができません

編集:私はインテントを使用してファイルから文字列を渡す方法を理解しました。私はまだいくつかのバグを取り除くことに取り組んでいます。

第2編集:これを行うためのより効率的な方法があります。私が動作させる唯一の方法は、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; 
    } 
} 
+0

奇妙なことをやっています。 mainactivityからsecondactivityと呼んでいます。そして、2番目にあなたは再びoncreate()でmainactivtyを開始しています。そして、このsecondactivityを使用しています。その主導権そのものにreadDataFile()メソッドを持たせることができます。 あなたの実際の必要条件を何かしようとしているのですか? – Ishu

+0

本当にやりたいことは、secondActivityハンドルでテキストファイルを読むことです。 MainActivityでファイル入力を処理することを提案したときに設定しましたが、他のクラスに移動したかったので、さらに多くのコンテンツを追加しました。 –

+0

あなたの目的は何ですか? – Ishu

答えて

0

あなたの条件については、以下を編集したコードを使用し 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; 
    } 
} 
+0

これがあなたの問題を解決するかどうか... ??? – Ishu

+0

ありがとう、それは多くの助けとなりました。 setResultメソッドが私が探していたものだったようです。 –

関連する問題