2016-08-25 2 views
0

, 나는 다음과 같은 기능을 가지고 :비 동적 수신기에서 MainActivity의 매개 변수가있는 함수를 호출하려면 어떻게해야합니까? 내 MainActivity에서

public void writefile (FileOutputStream fOut, String fileName, OutputStreamWriter osw, String message){ 
    try { 
     fOut = openFileOutput(fileName, MODE_WORLD_READABLE); 
     osw = new OutputStreamWriter(fOut); 
     osw.write(message); 
     osw.flush(); 
     osw.close(); 
    } 
    catch (IOException ioe){ 
     ioe.printStackTrace(); 
    } 
} 

, 내 onReceive 메소드 내, 내가 함수를 호출하려고 비 동적 (NO 레이아웃)이어야한다이 응용 프로그램에 대한 나의 SMS 수신 :

writefile(fOut, ib1, osw, message); 

내 매개 변수는 모두 괜찮지 만 'writefile'은 빨간색으로 표시되고 '해결할 수 없습니다.' 그래서 그것을 변경하려고 시도 :

MainActivity.writefile(fOut, ib1, osw, message); 

이제 'writefile'은 정적/비 정적 문제로 밑줄이 그어져 있습니다. 이 오류를 없애기 위해 MainActivity에서 함수를 정적으로 만들려고했지만 'openFileOutput'이 정적/비 정적에 대해 불평하기 시작합니다.

동일한 클래스에서 매번 호출 할 수 있도록 함수를 Receiver 클래스에 포함하려고했지만 Receiver가 BroadcastReceiver 만 확장 할 수 있기 때문에 'openFileOutput'과 같은 함수를 확인할 수 없습니다.

나는 또한 onReceiver에 대한 다른 활동을 호출하고 거기에서 내 작업을 수행하려고했으나이를 구현할 방법을 찾지 못했습니다.

누구든지이 문제에 관해 어떤 도움을 주실 수 있습니까? 미리 감사드립니다.

답변

1

openFileOutput()Context에 대한 방법입니다. 귀하의 활동은 Context이고 수신자는 onReceive()Context이 전달됩니다. 따라서 writefile() 메소드를 static으로 만들고 Context을 매개 변수로 전달하십시오. 그런 다음 openFileOutput()Context에 전달하십시오. 귀하의 활동은 Context의 경우 this을 전달하여 static 방법을 사용할 수 있습니다. 귀하의 수신자는 Context을 전달하여 static 방법을 사용할 수 있습니다 (onReceive()에 있음).

그런 다음 백그라운드 스레드에서만 writefile() 만 호출하고 있는지 확인하십시오.

+0

완벽한 답변 - 매력처럼 작동했습니다! 정말 고맙습니다!!! –

관련 문제