Finish Activity Android (with Theme.Dialog)?

我怕爱的太早我们不能终老 提交于 2019-12-24 22:59:10

问题


I have problem with finish Activity with Theme.Dialog .. it's need double press back button to finish Activity before back to previous Activity. One Press Back Button = Hide Acitivity (Theme.Dialog) and Second Press Back To Previous Activity.

and this code Acitivity (Theme.Dialog )

package com.tracking.bus.track;

import com.tracking.bus.R;

import org.holoeverywhere.app.Activity;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.content.Intent;
import org.holoeverywhere.app.Dialog; 

public class language extends Activity {
    private Ringtone r;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // setContentView(R.layout.main);

        Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);

        if(alert == null){
            // alert is null, using backup
            alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

            // I can't see this ever being null (as always have a default notification)
            // but just incase
            if(alert == null) {  
                // alert backup is null, using 2nd backup
                alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);                
            }
        }

        Dialog dialog = new Dialog(language.this); 
        dialog.setContentView(R.layout.dialog_notifikasi); 
        dialog.setTitle("Raygional"); 
        dialog.show();

         r = RingtoneManager.getRingtone(language.this, alert);
        r.play();

    }

    @Override
    public void onStop() {
       super.onStop();
       if(r.isPlaying())
       {
         r.stop();
       }

finish();
      }
}

so, How to Finish Acitivity with Theme.Dialog when Hide/Closed Acitivity ? sorry for my english


回答1:


Add a OnDismissListener.

package com.tracking.bus.track;

import com.tracking.bus.R;

import org.holoeverywhere.app.Activity;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.content.Intent;
import org.holoeverywhere.app.Dialog; 

public class language extends Activity {
    private Ringtone r;
    private DialogInterface.OnDismissListener mOnDismiss; // Variable OnDismiss

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // setContentView(R.layout.main);

        Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
        mOnDismiss = new DialogInterface.OnDismissListener(){ // initializing variable
            @Override
            public void onDismiss(DialogInterface dialog) {
                finish();
            }
        }
        if(alert == null){
            // alert is null, using backup
            alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

            // I can't see this ever being null (as always have a default notification)
            // but just incase
            if(alert == null) {  
                // alert backup is null, using 2nd backup
                alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);                
            }

        }

        Dialog dialog = new Dialog(language.this); 
        dialog.setContentView(R.layout.dialog_notifikasi); 
        dialog.setTitle("Raygional"); 
        dialog.setOnDismissListener(mOnDismiss); // assign variable.
        dialog.show();

         r = RingtoneManager.getRingtone(language.this, alert);
        r.play();

    }

    @Override
    public void onStop() {
       super.onStop();
       if(r.isPlaying())
       {
         r.stop();
       }

finish();
      }
}



回答2:


If I understand your question correctly, you want to call the activity's finish() method the first time the user hits "back", yes? In your activity:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        this.finish();
    }

    return super.onKeyDown(keyCode, event);
}


来源:https://stackoverflow.com/questions/24565205/finish-activity-android-with-theme-dialog

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!