2016-09-21 54 views
0

我目前正在Android Studio中構建一個涉及處理草圖的應用程序。如何在Android中正確退出處理草圖

主要類:

import android.app.Activity; 
import android.app.FragmentManager; 
import android.os.Bundle; 

import processing.android.PFragment; 
import processing.core.PApplet; 

public class ClassMain extends Activity { 
    /**************************************************/ 
    PApplet sketch; 
    /**************************************************/ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.class_main); 

     FragmentManager fragmentManager = getFragmentManager(); 
     sketch = new ClassSketch(); 
     PFragment fragment = new PFragment(); 
     fragment.setSketch(sketch); 
     fragmentManager.beginTransaction().replace(R.id.container, fragment).commit(); 
    } 
    /**************************************************/ 
    @Override 
    public void onBackPressed() 
    { 

     //ClassMain.this.finish(); 
    } 
    /**************************************************/ 
    //It doesn't work if called from sketch... 
    public void exits() 
    { 
     ClassMain.this.finish(); 
    } 
    /**************************************************/ 
} 

處理素描:

import android.view.KeyEvent; 
import processing.core.PApplet; 

public class ClassSketch extends PApplet { 
    /*****************************************************************************/ 
    public void settings() 
    { 
     size(displayWidth, displayHeight); 
    } 
    /*****************************************************************************/ 
    public void setup() 
    { 
    } 
    /*****************************************************************************/ 
    public void draw() 
    { 
     keykey(); 
    } 
    public void keykey() 
    { 
     if(keyPressed) 
     { 
      if (key == CODED) { 
       if (keyCode == KeyEvent.KEYCODE_BACK) { 
        //non of the following work: 
        //exit(); 
        ClassMain j = new ClassMain(); 
        j.exits(); 
       } 
      } 
     } 
    } 
} 

這是問題所在,我希望用戶,這取決於某些情況下,我將在草圖以後添加,退出不僅是草圖,而且是託管它的班級(ClassMain)。 當我在草圖中發生了一些事情時,我希望能夠退出整個MainClass,但我恰好失敗了。 感謝您的支持。

+0

請多個列表之間的鏈接:https://forum.processing.org/two/discussion/18230/how-to-correctly-exit-a-processing -sketch-in-android –

回答

0

這是沒有意義的:

ClassMain j = new ClassMain(); 
j.exits(); 

這裏你要創建的ClassMain一個新實例,然後立即退出。那什麼都不會做。

相反,您需要告訴已經存在的父母ClassMain退出。

要做到這一點,你需要父ClassMain情況下,你可以考慮你的ClassSketch構造參考:

public class ClassSketch extends PApplet { 

    private ClassMain parent; 

    public ClassSketch(ClassMain parent){ 
     this.parent = parent; 
    } 

    public void keykey(){ 
     parent.exits(); 
    } 
} 

然後到實例傳入構造器,你可以簡單地使用this關鍵字:

protected void onCreate(Bundle savedInstanceState) { 
     sketch = new ClassSketch(this); 
} 
+0

再次感謝:) – Zardoz

0

作爲一種補充的紙條上面,不要忘記調用super.onCreate(savedInstanceState);onCreate()功能。

您可以通過訪問finish()通過this.getActivity().finish();直接退出草圖。請注意,在API級別16和更高版本中,您也可以使用this.getActivity().finishAffinity();,請參閱here中的註釋。

最後,如果您按主頁按鈕,它會調用onStop(),所以應用程序在內存中逗留。如果按下後面的按鈕,則onDestroy()也會被調用。如果您按照所述致電finish(),則保證onDestroy()被調用。

我的兩分錢......

Kf個