在主要活动中,我有一个按钮,当我按下后退按钮时,我会进入另一个活动我想回到那个主要活动?我应该做同样的事情,我做了其他活动,但使用意图回到主要活动或主要活动onPause,我应该使用另一种方法来取消暂停?
当我点击主要活动中的按钮
时public class MainActivity extends Activity
{
GridView gridView;
ArrayList<Item> gridArray = new ArrayList<Item>(grid_size);
CustomGridViewAdapter customGridAdapter;
private GLSurfaceView glView; // Use subclass of GLSurfaceView (NEW)
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* glView = new MyGLSurfaceView(this);
setContentView(glView);*/
customGridAdapter = new CustomGridViewAdapter(this, R.layout.button_item, gridArray, str_arr,column_width,column_height);
gridView.setAdapter(customGridAdapter);
enableDisableView(gridView, false);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// action with ID action_refresh was selected
case R.id.action_refresh:
/*Toast.makeText(this, "Refresh selected", Toast.LENGTH_SHORT)
.show();*/
/*// Allocate a custom subclass of GLSurfaceView (NEW)
glView = new MyGLSurfaceView(this);
setContentView(glView); // Set View (NEW)private GLSurfaceView glView; */
Intent intent = new Intent(this, MyGLActivity.class);
startActivity(intent);
break;
// action with ID action_settings was selected
case R.id.action_settings:
Toast.makeText(this, "Settings selected", Toast.LENGTH_SHORT)
.show();
break;
default:
break;
}
return true;
}
protected void onResume()
{
super.onResume();
customGridAdapter.counter = 0;
}
protected void onPause()
{
/*if (customGridAdapter.scheduleTaskExecutorSession.isShutdown()
&& customGridAdapter.scheduleTaskExecutorSession1.isShutdown())
{
// do nothing
}
else
{
customGridAdapter.scheduleTaskExecutorSession.shutdown();
customGridAdapter.scheduleTaskExecutorSession1.shutdown();
}*/
super.onPause();
}
其他活动后退按钮代码
public class MyGLActivity extends Activity {
private GLSurfaceView glView; // Use subclass of GLSurfaceView (NEW)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Allocate a custom subclass of GLSurfaceView (NEW)
glView = new MyGLSurfaceView(this, null);
setContentView(glView); // Set View (NEW)
}
@Override
public void onBackPressed()
{
super.onBackPressed();
finish();
}
@Override
protected void onPause() {
//super.onPause();
//glView.onPause();
}
@Override
protected void onResume() {
super.onResume();
glView.onResume();
}
GLSurfaceView.java
public class MyGLSurfaceView extends GLSurfaceView {
MyGLRenderer renderer; // Custom GL Renderer
// For touch event
private final float TOUCH_SCALE_FACTOR = 180.0f / 320.0f;
private float previousX;
private float previousY;
// Constructor - Allocate and set the renderer
public MyGLSurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
renderer = new MyGLRenderer(context);
this.setRenderer(renderer);
// Request focus, otherwise key/button won't react
this.requestFocus();
this.setFocusableInTouchMode(true);
}
// Handler for key event
@Override
public boolean onKeyUp(int keyCode, KeyEvent evt) {
switch(keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT: // Decrease Y-rotational speed
renderer.speedY -= 0.1f;
break;
case KeyEvent.KEYCODE_DPAD_RIGHT: // Increase Y-rotational speed
renderer.speedY += 0.1f;
break;
case KeyEvent.KEYCODE_DPAD_UP: // Decrease X-rotational speed
renderer.speedX -= 0.1f;
break;
case KeyEvent.KEYCODE_DPAD_DOWN: // Increase X-rotational speed
renderer.speedX += 0.1f;
break;
case KeyEvent.KEYCODE_A: // Zoom out (decrease z)
renderer.z -= 0.2f;
break;
case KeyEvent.KEYCODE_Z: // Zoom in (increase z)
renderer.z += 0.2f;
break;
}
return true; // Event handled
}
// Handler for touch event
@Override
public boolean onTouchEvent(final MotionEvent evt) {
float currentX = evt.getX();
float currentY = evt.getY();
float deltaX, deltaY;
switch (evt.getAction()) {
case MotionEvent.ACTION_MOVE:
// Modify rotational angles according to movement
deltaX = currentX - previousX;
deltaY = currentY - previousY;
renderer.angleX += deltaY * TOUCH_SCALE_FACTOR;
renderer.angleY += deltaX * TOUCH_SCALE_FACTOR;
}
// Save current x, y
previousX = currentX;
previousY = currentY;
return true; // Event handled
}
}
答案 0 :(得分:0)
super.onBackPressed();应该是第一个ligne
@Override
public void onBackPressed()
{
super.onBackPressed();
finish();
}
答案 1 :(得分:0)
在Android中,活动是分层的&#39;在彼此之上。如果您没有在通话活动上拨打finish()
,按后退按钮会将您带回来。
所以好消息是:你根本不需要做任何事情。 android的标准行为将带你回到Main活动(如果你没有杀死它)
答案 2 :(得分:0)
您可以在点击后退键时覆盖该功能并返回到您想要的任何活动:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 3 :(得分:0)
我认为你可能指的是android后台堆栈。当您启动另一个活动时,新活动将被推送到上一个活动的顶部。之前的活动仍在堆栈中,但已停止。如果按后退按钮,顶部的活动将被销毁,之前的活动将恢复。所以,答案是否定的,你不需要另外的方法或任何东西。
您可以在中找到有关它的更多信息 http://developer.android.com/guide/components/tasks-and-back-stack.html