アクティビティ内で 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());
}
}
}