2017-11-20 4 views
0

버튼을 클릭하면 진행률 대화 상자가 표시되지 않고 다른 활동에 직접 문제가 있습니다. 내가하고 싶은 일은 다른 활동에 가기 전에 진행 대화 상자가 나타나는 것입니다. btn_create이 클릭되었을 때 보여주는 멋진 팝업 대화 상자를 얻으려고하는데 그냥 보이지 않습니다. 누구에게 해결책이 있습니까?다른 활동 클래스에 가기 전에 진행 대화 상자가 내 활동에 나타나지 않습니다.

는 다음 순간에 내 코드입니다 :

만 이미 해산시기 대화 상자 다른 활동을 시작하려면
DateFormat formatDateTime = DateFormat.getDateTimeInstance(); 
Calendar mCurrentDate = Calendar.getInstance(); 

private EditText mEventTitle; 
private EditText mEventLoc; 
private EditText mEventDesc; 
private TextView text_date; 
private TextView text_time; 
private ImageButton btn_date; 
private ImageButton btn_time; 
private Button btn_create; 
private Button btn_discard; 
private int day,month,year,hour,min; 

private DatabaseReference mEventDatabase; 
private DatabaseReference mUsersDatabase; 
private FirebaseUser mCurrentUser; 

private ProgressDialog mPDialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_add_new_event); 

    mEventTitle = (EditText) findViewById(R.id.eventTitle); 
    mEventLoc=(EditText)findViewById(R.id.eventLocation); 
    mEventDesc=(EditText)findViewById(R.id.eventDesc); 
    text_date = (TextView) findViewById(R.id.eventDate); 
    text_time = (TextView) findViewById(R.id.eventTime); 
    btn_date = (ImageButton) findViewById(R.id.pickDateBtn); 
    btn_time = (ImageButton) findViewById(R.id.pickTimeBtn); 
    btn_create=(Button)findViewById(R.id.createEvent); 
    btn_discard=(Button)findViewById(R.id.discardEvent); 

    mPDialog = new ProgressDialog(AddNewEvent.this); 

    mCurrentUser = FirebaseAuth.getInstance().getCurrentUser(); 
    mEventDatabase = FirebaseDatabase.getInstance().getReference().child("Event"); 
    mUsersDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(mCurrentUser.getUid()); 



    btn_create.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      updateEvent(); 
     } 
    }); 


} 



private void updateEvent() { 

    mPDialog.setTitle("Posting..."); 
    mPDialog.setMessage("Please wait..."); 
    mPDialog.setCanceledOnTouchOutside(false); 

    String d = text_date.getText().toString(); 
    String t = text_time.getText().toString(); 
    final String dt = d+" "+t; 

    final String title_val = mEventTitle.getText().toString().trim(); 
    final String loc_val = mEventLoc.getText().toString().trim(); 
    final String desc_val = mEventDesc.getText().toString().trim(); 
    final String current_uid = mCurrentUser.getUid(); 

    if(!TextUtils.isEmpty(title_val) && !TextUtils.isEmpty(loc_val) && !TextUtils.isEmpty(desc_val) && !TextUtils.isEmpty(dt)){ 

     mPDialog.show(); 

     final DatabaseReference newEvent = mEventDatabase.push(); 

     SimpleDateFormat df = new SimpleDateFormat("EEE, d MMM yyyy 'at' hh:mma"); 
     Date date = new Date(); 
     final String currentDate = df.format(date); 

     mUsersDatabase.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 

       newEvent.child("title").setValue(title_val); 
       newEvent.child("location").setValue(loc_val); 
       newEvent.child("desc").setValue(desc_val); 
       newEvent.child("date&time").setValue(dt); 
       newEvent.child("uid").setValue(current_uid); 
       newEvent.child("postDate").setValue(currentDate); 
       newEvent.child("username").setValue(dataSnapshot.child("name").getValue()); 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 
     mPDialog.dismiss(); 

     Intent mainIntent = new Intent(AddNewEvent.this, UpcomingEvent.class); 
     mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     startActivity(mainIntent); 
     finish(); 
    } 

} 
+0

postdelayed 처리기를 사용하여 몇 초 동안 누른 다음 활동을 시작하십시오. –

+0

이것은 대화 표시 코드가 비동기이기 때문입니다. 대화 상자 **를 표시하면 ** 코드가 일시 중지되지 않고 정렬 작업이 수행되지 않습니다. 대화 상자가 생성 된 것과 동일한 기능으로 대화 상자를 닫으므로 장치가 표시되기 바로 전에 발생합니다. –

+0

'mPDialog.show();'가 호출되는지 확인 하시겠습니까? – nhoxbypass

답변

0

. 대화 상자를 표시하기 전에 updateEvent() 내부에이를 사용하여 대화 상자가 해산 할 때마다

mPDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { 
    public void onDismiss(DialogInterface dialog) { 
     Intent mainIntent = new Intent(AddNewEvent.this, UpcomingEvent.class); 
     mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
     Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     startActivity(mainIntent); 
     finish(); 
    } 
}); 

mPDialog.show(); 

그런 다음 (CANCEL (취소)를 누르면 mPDialog.dismiss()를 사용하거나에 의해, ..)는 onDismiss()를 호출합니다. 그런 다음 새로운 활동을 시작할 시간입니다.

+0

게시 한 코드를 시도했지만 계속 진행 대화 상자가 표시되지 않습니다. – steven

+0

@steven 어디에서이 코드를 작성 했습니까? mPDialog.show(); 전화가 왔어? – nhoxbypass

+0

나는 mUserdatabase 앞에 if 문 안에있는 updateEvent() 안에 코드를 넣는다. addValueListener – steven

0

코드의 문제는 일련의 작업입니다. mPDialog.show();을 수행 한 후 바로 mPDialog.dismiss();을 수행하고 활동을 시작하십시오.

AlertDialog mPDialog = new AlertDialog.Builder(this) 
    .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
     Intent mainIntent = new Intent(AddNewEvent.this, UpcomingEvent.class); 
     mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     startActivity(mainIntent); 
     finish();) 
.show(); 

을 아니면 버튼 OnClickListener를() 안에 활동을 시작하기위한 코드를 삽입 :

대신 대화 상자를 표시해야합니다

및 누르면 버튼은 다음과 같이 활동을 시작합니다.

+0

답장을 보내 주셔서 감사합니다.하지만 필요한 것은 경고 대화 상자를 사용하는 대신 진행 대화 상자입니다. 게시 한 코드를 추가하고 시도했지만 코드에 오류가 있습니다. – steven