2013-02-14 2 views
2

안녕하세요 Android 프로그래머,android에서 비 대화식 또는 비 활동 클래스의 경고 대화 상자를 표시합니다.

이 질문은 이전에 받았던 질문입니다. 그러나 아무런 대답이 없습니다. 그래서 그 해결책이 필요합니다. 실제로 test.java (비 활동)에서 전화 Mainactivity.java의 경고 상자를 표시하려고합니다.

UI 코딩이없는 경우 잘 작동합니다. 해당 코드가 UI에 종속되어 있으면 throw 오류가 발생합니다.

활동 클래스 :

public class Mainactivity extends Activity 
{ 
    public void message() 
    { 
     Log.i("Success : Call from non-UI & non activity class");//Upto this line working if i called message() function from other non-activity class 
     DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() 
     { 
     public void onClick(DialogInterface dialog, int which) 
     { 
      switch (which) 
      { 
       //Code 
      } 
     } 
    }; 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("FMS Status Message :- "); 
    builder.setMessage(msg) 
    .setPositiveButton("OK",dialogClickListener).show(); 

    } 
} 

비 활동 클래스 :

public class test extends BroadcastReceiver 
{ 
    Mainactvity in = new Mainactvity(); 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     in.message(); 
    } 
} 

그 다음 해결 내 프로젝트의 내 주요 목적은 완료됩니다. 제발 도와주세요.

미리 감사드립니다. 당신은 활동 클래스의 생성자를 만들 수 없습니다

Mainactvity in = new Mainactvity(); 

모두의

+0

오류가 발생하는 경우 - 오류를 게시 할 수 있습니까? – Anukool

+1

Mainactvity에서 컨텍스트 및 활동을 클래스 test로 전달하지 않는 이유는 무엇입니까? 또한 안드로이드에 대한 프로그래밍 실습이 좋지 않다는 표시가 있습니다. – Sree

답변

3

첫째, 안드로이드에 대한 나쁜 프로그래밍 연습.

두 번째로 Activity의 참조가없는 대화 상자에 BroadcastReceiver에 UI 요소를 표시하려고합니다. Activity (UI와 관련된 경우)의 Activity 또는 BroadcastReceiver에서 Dialog를 표시하는 Application을 사용하십시오.

+0

알았습니다. 테스트 클래스에 경고창을 표시 할 수 있습니까? – DillGates

+0

이 시도했지만 작동하지 : Context mContext = getApplicationContext(); 마지막 AlertDialog.Builder alert = 새로운 AlertDialog.Builder (mContext); alert.setTitle ("메시지를 받았습니다. 보낸 사람 :"+ to); alert.setCancelable (true); alert.show(); 참고 테스트 클래스는 활동이 아닙니다. 대답 해주세요. – DillGates

+0

사실, 테스트 (비 활동) 클래스에 경고 상자를 표시해야합니다. 그게 ..! – DillGates

0

Constructor을 작성하십시오. 여기에서 Activity를 얻을 수 있습니다. 이처럼 - 이제

Activity activity; 
public test (Activity activity){ 
     this.activity = activity; 
} 

, 인수로이 activity를 사용 -

AlertDialog.Builder adb=new AlertDialog.Builder(activity);

을 대화 단지 context 사용하여 표시 할 수 없습니다 때문입니다. 이를 위해서는 Activity을 제공해야합니다.

내가 대답했습니다 here

+0

이것은 작동하지 않습니다. 대화 상자는 전달 된 액티비티로 생성되지 않으며 오류는 발생하지 않지만 대화 상자는 생성되지 않습니다. – Ekta

+0

새로운 질문을하고 코드를 게시하여 볼 수 있습니다. – Darpan

+0

그래도 좋은 생각은 안된다고 말할 수 있습니다. java.lang.NullPointerException : null 객체 참조에서 'android.content.res.Resources $ Theme android.content.Context.getTheme()'가상 메소드를 호출하려고 시도했습니다. – Jonas

관련 문제