我在A类中调用一个方法,从类中调用它。但是如果我在B类中调用相同的方法,我会得到错误

时间:2012-07-12 04:49:46

标签: android

  

这是方法

public String testFile(int numofpunches, String filename,  int picture, int cancelpix){
    String string="";
    Boolean a;
    FILENAME = filename;
    try {
        FileInputStream fis = openFileInput(filename);
        try{
            int counter = fis.read( mIds, 0,numofpunches);
            fis.close();
            int i=0;
            while( i <counter ){
                if(mIds[i] == 'c'){
                    mThumbIds[i++] = picture; //R.drawable.crab;
                    string=string.concat("c");

                }else{

                    mThumbIds[i] = cancelpix; 
                    string=string.concat("x");


                    ImageView punchit =  (ImageView) 
findViewById(mypunches[i++]);

punchit.setImageResource(R.drawable.punchboxcancelled);




                }
            }
            String testfordone = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
            a= string.equals(testfordone.substring(0,numofpunches));
            if(a){
                return "done";
            }
        }catch (IOException e){


        }
    }catch (FileNotFoundException e) {

        try {//initialize
            String FILENAME = filename;
            FileOutputStream fos =  openFileOutput(FILENAME, 
            Context.MODE_PRIVATE);
            string  = "cccccccccccccccccccccccccccccccccccccc";
            string.substring(0,numofpunches);

            try {
                fos.write(string.getBytes());
                fos.close();


                int counter = 0;
                while(counter < numofpunches ){

                    mThumbIds[counter++] =  picture; 

                }
            }catch(IOException err){

            }

        }catch(FileNotFoundException error){


        };

    }
  

我从这个方法所在的同一个类(A)调用它。   现在我使用相同的方法创建一个新类(PunchActivities)。   在A中导入类PunchActivities   将方法称为

PunchActivities pa = new PunchActivities();
String result = pa.testFile(all the required parameters);
  

在运行时程序进入

FileInputStream fis = openFileInput(filename); in PunchActivities 
  

然后它返回到A类,出现NullPointer错误。   为什么?????谁都知道android的规则?

4 个答案:

答案 0 :(得分:0)

我认为问题出在这一行:

      punchit.setImageResource(R.drawable.punchboxcancelled);

因为在这个类中,你没有像在前面的类中那样设置相同的xml(在onCreate()的setContentView()方法中)。所以这个观点在这里找不到。

答案 1 :(得分:0)

将Context作为参数传递给函数并使用context.openFileInput(fileName)。同样适用于openFileOutput(fileName)

我希望它会有所帮助。

答案 2 :(得分:0)

最好使用以下代替“FileInputStream fis = openFileInput(filename);在PunchActivities中”,

试试这个

FileInputStream fis =new FileInputStream(filename);

答案 3 :(得分:0)

我发现我需要将路径传递给文件。