2016-04-05 12 views
0

Basierend auf einem YouTube-Tutorial-Video (https://www.youtube.com/watch?v=wxqgtEewdfo), die das Erstellen von Popup-Fenstern lehrt, habe ich mich gefragt, wie das Popup mit einem Touch-Ereignis im Gegensatz zu den Zurück-Taste ...Deaktivieren der Zurück-Taste für Popup-Fenster

hier MainActivity:

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

    RelativeLayout relative = (RelativeLayout)findViewById(R.id.relativeTest); 

    Button button = (Button)findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext(). 
        getSystemService(LAYOUT_INFLATER_SERVICE); 
      ViewGroup container = (ViewGroup) layoutInflater.inflate(R.layout.myLayout, null); 

      PopupWindow popupWindow = new PopupWindow(container, AbsListView.LayoutParams.MATCH_PARENT, 
        AbsListView.LayoutParams.MATCH_PARENT, true); 
      popupWindow.showAtLocation(relative, Gravity.CENTER, 0, 0); 

      container.setOnTouchListener(new View.OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 
        popupWindow.dismiss(); 

        return true; 
       } 
      }); 
     } 
    }); 
} 

@Override 
public void onBackPressed() { 
    // I want the back button to be disabled for both MainActivity and the 
    // popup window. 
} 

... Soll ich stelle onBackPressed() an anderer Stelle oder wäre das auch möglich sein?

Vielen Dank im Voraus.

+0

Sie können onBackPressed überschreiben und eine Logik verwenden (z. B. prüfen, ob das Popup angezeigt wird). Rufen Sie in Situationen, in denen Sie backPressed verwenden möchten, nur super.onBackPressed auf. Zum Beispiel 'if (! MPopupWindow.isShowing()) super.onBackPressed();' – zgc7009

+0

Mögliches Duplikat von [Android-Popup-Fensterabweisung] (http://stackoverflow.com/questions/3121232/android-popup-window-dismissal) –

+0

@ zgc7009 Ich weiß, was du meinst und das ist, was ich früher gemacht habe, aber ich habe hier getauscht ... Ich möchte die Zurück-Schaltfläche im Allgemeinen für activity_main und das Popup deaktivieren (nur durch ein Touch-Ereignis absetzbar), und es funktioniert irgendwie nur für Geräte unter API 23 (6.0). – DaveNOTDavid

Antwort

0

Ok, ich es herausgefunden (Kredite an Filip, der Uploader der YouTube-Videos) jetzt ... Das Problem war, dass ich aufgenommen und stellen sie den letzten Parameter PopupWindow, fokussierbar, zu wahr, und sobald ich es losgeworden wie folgt:

popupWindow = new PopupWindow(container, AbsListView.LayoutParams.MATCH_PARENT, 
        AbsListView.LayoutParams.MATCH_PARENT); 

... Das Popup nun von einem Berührungsereignis nur dismissable ist.

0

Lassen Sie onBackPressed leer. Entfernen Sie die super.OnBackPressed Linie

+0

... Das habe ich gemacht. – DaveNOTDavid

+0

@Override public void onBackPressed() { moveTaskToBack (false); } –

0

Try this: -

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (Integer.parseInt(android.os.Build.VERSION.SDK) > 5 
     && keyCode == KeyEvent.KEYCODE_BACK) { 
    Log.d("CDA", "onKeyDown Called"); 
    onBackPressed(); 
    return true; 
} 
return super.onKeyDown(keyCode, event); 
} 
+0

Nein, machte keinen Unterschied ... Ich schätze die Hilfe btw! – DaveNOTDavid

+1

Danke ...... Versuche mehr zu recherchieren –

+0

Ich habe es jetzt herausgefunden! Schau dir meinen Antwort Post an :) – DaveNOTDavid