2014-01-05 3 views
1

나는 캠퍼스 맵 응용 프로그램에서 일하고 있습니다. 맵 활동은 주 활동이지만, 사용자 정의 대화 상자에 대해 다른 활동이 있습니다. 나는이 커스텀 다이얼로그를 항상 얻는다. 지도 활동에 대화 활동 호출

사실 나는 이런 식으로 표시하는 경우를 원한다.

나는이 활동

public class AdminActivity extends FragmentActivity{ 

    public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(AdminActivity.this); 
    builder.setTitle(R.string.layers) 
      .setItems(R.array.layer_options, new DialogInterface.OnClickListener(){ 
       public void onClick(DialogInterface dialog, int which) { 
       // The 'which' argument contains the index position 
       // of the selected item 
      } 
    }); 
    return builder.create(); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.activity_main); 

    Dialog dialog=onCreateDialog(savedInstanceState); 
    dialog.show(); 
    } 
} 

이 코드가 그리고이 코드는 ... 내가 대화 상자를 호출하는거야 주요 활동의 일부입니다

@Override 
public boolean onOptionsItemSelected(MenuItem item){ 
AdminDialog adminDialog; 
    switch(item.getItemId()){ 
    case R.id.about: 
     Intent aboutUs = new Intent("com.android.cmumap.ABOUT"); 
     startActivity(aboutUs); 
     break; 
    case R.id.search: 

     break; 
    case R.id.layers: 
     adminDialog= new AdminDialog(); 
     adminDialog.show(getFragmentManager(), "custom-tag-goes-here"); 
     break; 
    } 
    return false; 
} 

AdminActivity에 대한지도 활동 호출은 어떻게합니까? 고맙습니다.

+0

내 AdminActivity에 대한지도 작업을 호출 할 때 오류가 발생합니까? –

+0

내 프로그램은 대화 상자를 보여주는 버튼을 누르는 동안 멈 춥니 다. – myooomyoo

답변

1

클래스는 서브 클래스 DialogFragment이 아니라 FragmentActivity이되어야합니다. onCreateDialog(...) 메서드는 @Override이어야합니다. DialogFragment과 함께 필요하지 않으므로 onCreate(...) 방법을 제거 할 수도 있습니다.

Activity처럼 사용하는 대신 DialogFragment을 표시하려면 맵 작업에서 다음을 수행하십시오. 지금은 Dialog 오히려 Activity하지만이기 때문에이 클래스의 이름을 변경합니다 .. 선생님 나단 월터스

이 사용자 정의 대화 상자의 AdminDialog 활동을위한에

adminDialog= new AdminDialog(); 
adnimDialog.show(getFragmentManager(), "custom-tag-goes-here"); 
+0

아니요,이 코드는이 대화 상자를 호스팅하려는 모든 액티비티에 있어야합니다.이 액티비티는 맵을 표시하는 데 사용하는 활동 일 것입니다. 대화 상자를 표시하려면 해당 코드를 사용하기 만하면됩니다. –

+0

커스텀 태그는 여기에 무엇을 넣을까요? – myooomyoo

+0

여기에 오류가 있습니다 .. 새로운 AlertDialog.Builder (AdminActivity.this) 그것은 정의되지 않았다고 말합니다 .. – myooomyoo

0

감사

import android.app.AlertDialog; 
import android.app.Dialog; 
import android.app.DialogFragment; 
import android.content.DialogInterface; 
import android.os.Bundle; 

public class AdminDialog extends DialogFragment{ 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setTitle(R.string.layers) 
      .setItems(R.array.layer_options, new DialogInterface.OnClickListener(){ 
       public void onClick(DialogInterface dialog, int which) { 
       // The 'which' argument contains the index position 
       // of the selected item 
      } 
    }); 
    return builder.create(); 
} 
} 

그리고 대화 상자가 호출되는 주요 활동이 있습니다 ..

AdminDialog adminDialog; 

adminDialog= new AdminDialog(); 
adminDialog.show(getFragmentManager(), "custom-tag-goes-here");