2016-09-21 3 views
0

現在、AndroidスタジオにProcessingスケッチを含むアプリを作成しています。AndroidでProcessingスケッチを正しく終了する方法

メインクラス:

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を終了することができますが、失敗することがあります。 サポートいただきありがとうございます。ここで

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

あなたがClassMainの新しいインスタンスを作成した後、すぐに出ている:

+0

クロスポストの間でリンクしてください:https://forum.processing.org/two/discussion/18230/how-to-correctly-exit-a-processing -sketch-in-android –

答えて

0

これは意味がありません。それは何もしません。

代わりに、すでに存在する親のClassMainに終了するように伝える必要があります。これを行うには

、あなたがあなたのClassSketchコンストラクタに取ることができ、親ClassMainインスタンスへの参照、必要があります。コンストラクタにインスタンスを渡すその後

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

、あなたのonCreate()機能でsuper.onCreate(savedInstanceState);を呼び出すことを忘れないでください。

からfinish()にアクセスして、スケッチから直接終了することができます。 APIレベル16以上ではhereにコメントしたthis.getActivity().finishAffinity();もあります。

最後に、家のボタンを押すと、onStop()が呼び出され、メモリに残ります。 戻るボタンを押すと、onDestroy()も呼び出されます。上記のようにfinish()を呼び出すと、onDestroy()が呼び出されることが保証されます。

私の2セント

...

Kfを

関連する問題