我是Java编程的新手,但已经用其他语言编程了。我遇到的问题是我认为在从新意图返回时失去视角焦点。
我第一次跑步时想要收集用户的信息,所以我做了
Intent myIntent = new Intent(getApplicationContext(), UserInformation.class);
startActivityForResult(myIntent, UserInformationRequest);
这很好用。我跳转到意图,收集数据并返回onActivityResult。 在那里我想显示主屏幕并让用户移动图像,所以我设置了onTouchListener
@Override
public void onActivityResult(int iRequestCode, int iResultCode, Intent UserInformationData)
{
super.onActivityResult(iRequestCode, iResultCode, UserInformationData);
switch(iRequestCode)
{
case UserInformationRequest: setContentView(R.layout.main);
doMoving();
}
}
public void doMoving()
{
ivImage =(ImageView) findViewById(R.id.image);
ivImage.setOnTouchListener(this);
}
@Override
public boolean onTouch(View View, MotionEvent event)
{
final int X = (int) event.getRawX();
final int Y = (int) event.getRawY();
switch (event.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN: _xDelta = (int) (X - ivImage.getTranslationX());
_yDelta = (int) (Y - ivImage.getTranslationY());
ivHomeImage.setVisibility(View.VISIBLE);
break;
case MotionEvent.ACTION_UP: ivHomeImage.setVisibility(View.INVISIBLE);
break;
case MotionEvent.ACTION_POINTER_DOWN:
break;
case MotionEvent.ACTION_POINTER_UP:
break;
case MotionEvent.ACTION_MOVE: ivImage.setTranslationX(X - _xDelta);
ivImage.setTranslationY(Y - _yDelta);
break;
}
return true;
}
}
这不起作用。如果我跳过调用intent并直接转到onTouchListener,则可以移动图像。
我已经理解为什么调用Intent并返回会让我的MainActivity破坏。
答案 0 :(得分:1)
您正在使用setcontentview两次。这样做将要求您再次初始化按钮等大部分内容。这不是一个好习惯。建议您只在活动中使用一次和onCreate方法。删除这一行:
setContentView(R.layout.main);//on onActivityResult