2017-11-21 22 views
-1

누군가 도와 드릴 수 있기를 바랍니다. 정적 메서드에서 fragmentmanager에 액세스해야하는 비 활동 클래스가 있습니다. 불행히도 컨텍스트를 올바르게 전달하는 방법을 알지 못합니다. 어떤 도움에 감사드립니다비 활동 클래스의 getSupportFragmentManager에 액세스하십시오.

,

비 활동 클래스 :

public class testClass { 
.. 
public synchronized static void checkNewdata(List<data>input, Context context) { 
.. 
     FragmentManager ft = ((FragmentActivity)???).getSupportFragmentManager(); 
       DialogFragment newFragment = MyNotification.newInstance(); 
       newFragment.setCancelable(false); 
       newFragment.show(ft, "mydialog"); 
.. 
    } 
} 

의 I 컨텍스트를 전달하려고하는 checkNewdata도 비 활동 클래스에서 호출되는 방법,하지만이 어쩌려 구`t 작업 :

public class SearchResponse extends SuccessResponse { 

private Context mcontext; 

public SearchResponse(Context context){ 
    mcontext = context; 
} 
.. 
@Override 
    public void save() { 
.. 
    testClass.checkNewdata(mainData, context); 
.. 
    } 
} 
+0

정적 메소드에서 'Context' 참조를 보유하는 것은 좋지 않습니다. 대안을 찾기보다는 디자인을 다시 생각해 보는 것이 좋습니다. –

답변

1

대신 컨텍스트의 활동을 통과

public synchronized static void checkNewdata(List<data>input, Activity activity) { 
.. 
     FragmentManager ft = ((FragmentActivity)activity).getSupportFragmentManager(); 
       DialogFragment newFragment = MyNotification.newInstance(); 
       newFragment.setCancelable(false); 
       newFragment.show(ft, "mydialog"); 
.. 
    } 
+0

Thx, 나는 다음을 사용 : 개인 활동 활동; public SearchResponse (활동 활동) { this.activity = 활동; } 하지만 이제 앱이 다운됩니다. 클래스 변환기를 만들 수 없습니다. 개조. – Simon

+0

해결됨, 다시 thx – Simon