【问题标题】:How to call previous Android Activity from Unity Activity如何从 Unity Activity 调用之前的 Android Activity
【发布时间】:2011-10-13 12:49:05
【问题描述】:

我的主要活动有一个启动 UnityActivity 的按钮。我需要完成 UnityActivity 并返回之前的活动。当按下后退按钮时,它会关闭整个应用程序。

我能做什么?谢谢!

编辑:

我使用来自 Qualcomm 增强现实 (Unity Extension) 的 AR 播放器。 我只有一项主要活动,我从 Qualcomm 增强现实启动 AR 播放器。

主要活动

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 玩家活动

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);
    }
}

【问题讨论】:

  • 我在这个问题上没有说得更清楚,但是你的流程就像 main->unit 一样,如果你从 unit 应用程序返回,则不会返回到 main Activity。对吗?跨度>
  • 你能告诉我们你的调用活动代码和清单文件吗
  • 向我们展示代码,您可以在其中启动 AR 播放器活动。

标签: android unity3d back-button


【解决方案1】:

我发现使用被覆盖的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 来自此线程:Can't pass back event from Unity to android library jar

【讨论】:

    【解决方案2】:

    使用下面的代码

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

    【讨论】:

    • 当你默认按下它时它会完成它
    【解决方案3】:

    执行如下操作:

     Intent i=new Intent(unityActivity.this,mainActivity.class); // the names of activity as per you program.
        startActivity(i);
    finish();
    

    【讨论】:

      猜你喜欢
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      相关资源
      最近更新 更多