1

アクティビティ内で InputStream を作成しようとしています。それは問題なく作成されますが、作成された InputStream を、実際に InputStream を操作したいクラスに渡そうとしています。アクティビティの onClick メソッド内で作成された InputStream 。次に、InputStream オブジェクトを「作業クラス」内のメソッドに渡そうとすると、NullPointerException が発生します。私は自分の活動の中で仕事をしたくありません。InputStream または AssetManager オブジェクトを渡して操作するにはどうすればよいですか。私の「労働者階級」は何も拡張も実装もしません。それはすべきですか?

    public class MainActivity extends ListActivity {
        private DbManagement mdbManager;
        private TestProcessor tp;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_lookup);
            mdbManager = new DbManagement(this);
            mdbManager.open();
            fillData();
            Button testingCsv =(Button)findViewById(R.id.btnTestCsv);
            testingCsv.setOnClickListener(ChokeSlam);
            testPopulate_Tests();

        }

        private OnClickListener ChokeSlam = new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                AssetManager aM = getAssets();
                InputStream ipNext = null;
                InputStreamReader iprNext = null;
                try{                
                    //ipNext = aM.open("Book1.csv");
                    //CSVReader reader = new CSVReader(new InputStreamReader(ipNext));
                    //iprNext = new InputStreamReader(ipNext);
                    //tp.ProcessInboundStream(ipNext);
                    tp.ProcessInboundStream(aM,"Book1.csv");
                    ipNext.close();
                    //tp.ProcessInboundStream(new InputStream(ipNext));
                }
                catch(Exception ex){
                  System.out.println(ex.toString());
                }
            }

        };



    public class TestProcessor {
        private DbManagement mdbManager;
        private final Context mctx;

        public TestProcessor(Context ctx) {
            // TODO Auto-generated constructor stub
            this.mctx = ctx;
        }
        public void ProcessInboundStream(AssetManager aM,String fileName){


            InputStream ipNext = null;
            try{                
                ipNext = aM.open(fileName);
                CSVReader reader = new CSVReader(new InputStreamReader(ipNext));        
                ipNext.close();
                //tp.ProcessInboundStream(new InputStream(ipNext));
            }
            catch(Exception ex){
              System.out.println(ex.toString());
            }
        }
    }
4

2 に答える 2