Как вызвать предыдущую активность Android из Unity Activity - PullRequest
3 голосов
/ 13 октября 2011

В моей основной деятельности есть кнопка, которая запускает UnityActivity.Мне нужно завершить UnityActivity и вернуться к предыдущему действию.При нажатии кнопки «Назад» закрывается все приложение.

Что я могу сделать?Спасибо!

Редактировать:

Я использую AR-плеер от Qualcomm Augmented Reality (Unity Extension).У меня есть только одно основное занятие, которое я начинаю AR-игроком из Qualcomm Augmented Reality.

Основная активность

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

    public void onBtnStartClick(final View v) {
        Intent i= new Intent(this,ArPart.class);
        startActivity(i);
    }
}

AR Player Activity

public class ArPart extends QCARPlayerActivity {
/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

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

Ответы [ 3 ]

4 голосов
/ 12 февраля 2014

Мне было проще всего использовать переопределенный onBackPressed(), но для этого вам также нужно внести изменения в свой проект Unity:

void Update ()
{
    if (Input.GetKeyUp (KeyCode.Escape)) {

        AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"); 
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity"); 
        jo.Call ("onBackPressed");
    }
}

Затем в классе своей деятельности:

@Override
public void onBackPressed() {

    // Handle the activity however you want,
    // what you do here will be executed when the back button is pressed
}

Кроме того, помните, что для того, чтобы это работало должным образом, объект UnityPlayer не может быть приостановлен - вы должны приостановить его после обработки события нажатия кнопки назад.

Автор кредита @Frank Nguyen из этой ветки: Невозможно передать событие из Unity в библиотеку jar .

0 голосов
/ 13 октября 2011

сделайте что-то вроде этого:

 Intent i=new Intent(unityActivity.this,mainActivity.class); // the names of activity as per you program.
    startActivity(i);
finish();
0 голосов
/ 13 октября 2011

используйте следующий код

@Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        //super.onBackPressed();
        finish();
    }
...