0

「グローバル」というクラスが 1 つと、他に 2 つのアクティビティがあります。各アクティビティで、"textfile" というテキスト ファイルの最初の行を読み取るために、Global クラスのインスタンスを作成したいと考えています。なぜかうまくいかない

グローバル クラスのコードは次のとおりです (ファイル Global.java 内)。

import android.app.Activity;
public class Global extends Activity {
    public String line;
    public Global() {
        InputStream file = getResources().openRawResource(R.raw.textfile);
        BufferedReader input = new BufferedReader(new InputStreamReader(file));
        try {
            line = input.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
} 

クラス Global のインスタンスを持ち、「textfile」の最初の行を表示する「HelloWorld」(HelloWorld.java ファイル内) というアクティビティのコードを次に示します。

public class HelloWorld extends Activity{   
    Global gb;
    TextView myTV;
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.helloworld);
            gb=new Global();
        myTV = (TextView) findViewById(R.id.textView1);
        myTV.setText("First line is: "+gb.line);
    }

}

4

3 に答える 3

1
import android.app.Activity;
public class Global extends Activity {
    static String line="";

    public Global(Activity mainactivity)
    {
        InputStream file = mainactivity.getResources().openRawResource(R.raw.textfile);
        BufferedReader input = new BufferedReader(new InputStreamReader(file));
        try {
            line = input.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
} 


public class HelloWorld extends Activity{   
    Global gb;
    TextView myTV;
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.helloworld);
        gb=new Global((Activity)this);
    myTV = (TextView) findViewById(R.id.textView1);
        myTV.setText("First line is: "+gb.line);
    }
}
于 2012-06-29T05:06:51.760 に答える
0

これを試してみてください....

    public class Global extends Activity {
            public String line;
            public Global() {

               try{

  InputStream inputStream = getApplicationContext().getResources().openRawResource(R.raw.textfile);

                 InputStreamReader inputreader = new InputStreamReader(inputStream);

                BufferedReader input = new BufferedReader(inputreader);
                String s = null;

                 while ((s=input.readLine())!=null)
                    {
                       line = s;
                    }
                 }catch(Exception ex){
                     ex.printStackTrace();
                  }
            }


} 
于 2012-06-29T04:45:32.087 に答える
0

グローバルな拡張アクティビティクラスを不必要に持つ必要はありません。

あなたができることは、グローバルコンストラクターでコンテキストを渡すことです。

正しい方法は

HelloWorld.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

    public class HelloWorld extends Activity{   
        Global gb;
        TextView myTV;
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.helloworld);

            gb=new Global(this);

            myTV = (TextView) findViewById(R.id.textView1);
            myTV.setText("First line is: "+gb.getLine());
        }
    }

Global.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;


public class Global {
    private AbcActivity abcActivity;
    public String line;

    public Global(AbcActivity abcActivity) {
        this.abcActivity = abcActivity;
    }

    public String getLine() {
        InputStream file = abcActivity.getResources().openRawResource(
                R.raw.textfile);
        BufferedReader input = new BufferedReader(new InputStreamReader(file));
        try {
            line = input.readLine();
            return line;
        } catch (IOException e) {
            e.printStackTrace();
            return "Error reading File!";
        }
    }

}
于 2012-06-29T04:53:54.120 に答える