在下一个按钮和上一个按钮之间跳转同一个活动
我已经搜索并找不到任何明确的问题。在下一个按钮和上一个按钮之间跳转同一个活动
在我的应用程序中,我有一个活动,您可以回答一个检查点,发送它并转到下一个检查点。用户应该也可以跳过,并跳回到先前的检查点。
让我用一些代码来支持我的故事。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.checkpointform);
go = (GlobalObject)getApplication();
_checkPoints = new ArrayList<CheckPoint>();
_checkPoints.addAll(go.getCheckPoints());
_currentActiveItemId = getIntent().getIntExtra("checkPointId", 0);
int count = 0;
while(count < _checkPoints.size()) {
if(_currentActiveItemId == _checkPoints.get(count).getPrimaryKey()) {
_checkPointTitle = _checkPoints.get(count).getCheckPointTitle();
}
count++;
}
final TextView tvCheckPointTitle = (TextView)findViewById(R.id.txtCheckpoint);
tvCheckPointTitle.setText(_checkPointTitle);
this.registerButtonEvents();
_simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH.mm.ss");
Log.d(TAG, "On create");
}
此代码未优化。我希望它在我这样做之前先工作,所以不要为此对我很难,但提示总是非常受欢迎。
所以这里发生了什么。 全局(应用程序范围)对象被实例化。 我得到一个数组列表并将其存储在本地数组列表中。
我从屏幕上拿出额外的东西给我。 我循环搜索列表以比较当前选择的项目标识与主键,以获取正确的数据显示。
我然后注册按钮事件,像这样:
private void registerButtonEvents() {
ImageButton btnTakePicture = (ImageButton)findViewById(R.id.btnTakePicture);
btnTakePicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
takePictureButton();
}
});
Button btnPreviousCheckPoint = (Button)findViewById(R.id.btnPrev);
btnPreviousCheckPoint.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
previousCheckPoint();
}
});
Button btnNextCheckPoint = (Button)findViewById(R.id.btnNext);
btnNextCheckPoint .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nextCheckPoint();
}
});
}
称为在onclick事件不做任何事情的方法。 这是我需要帮助的地方。
我需要的是,目前的活动被摧毁,但在这之前发生,称此活动..可能是这样的:意向意图=新意图(这一点,checkPointFormActivity);
,并给予一个/上一个活动currentselected ID + 1(如果下一个项目是空,生病获取列表中的第一项..这是逻辑病担心以后)
但是我一直在调用这个活动时没有丝毫的意义。
因此,在短期:
我需要调用相同的活性当前,随着新的数据。这样做后,我想销毁/完成/删除/取消上一个活动。 (可以说检查点1是当前的活动,我按下一步,这个活动应该用新数据刷新/完成,并且以意图以ID的形式传递的新数据被召回
我希望我提供足够的信息,这种方式。 如果有不清楚的地方,而且它不会让我感到吃惊。请让我知道这样我就可以编辑。
我想什么是
private void nextCheckPoint() {
int count = 0;
int listLength = _checkPoints.size();
while(count < listLength) {
if(_currentActiveItemId == _checkPoints.get(count).getPrimaryKey()) {
final Intent intent = new Intent(this, CheckPointFormActivity.class);
intent.putExtra("checkPointId", _currentActiveItemId + 1);
startActivity(intent);
}
}
}
也ttried调用完成()后并在开始活动之前,它会导致我的应用程序根本没有响应。
非常感谢您花时间阅读这个问题。希望能够尽快看到如何改变流程的答案或任何建议。谢谢。
我可能没有正确理解你,但是重新实例化导航活动的原因是什么?你为什么不:
- 只需刷新你的小部件与用户导航时的新检查点的信息?
- 或使用
ViewFlipper
在同一活动内的视图之间导航? - 或使用
ViewPager
来使用用户可以使用手势导航的片段?
编辑
你说你不知道如何刷新新的信息的部件。这应该相当容易。
您有用于导航按钮的事件处理程序,因此您可以确定新的检查点以及要显示的数据。视图中显示检查点特定数据的每个控件都必须为新检查点进行更改。
例如,检查点的名称可以显示在TextView
内。然后,你就必须更新TextView
这样的:
TextView checkPointTitle = (TextView)findViewById(R.id.checkPointTitle);
checkPointTitle.setText(newCheckPointTitle);
您可以创建一个需要检查点的ID的方法(可能是指数是检查点或数据库ID或者其他对象的列表)并更新控件。然后在确定要显示的检查点的ID后,从previousCheckPoint
和nextCheckPoint
方法中调用此方法。当然,当第一次检查点首次显示活动时,您也会调用此方法。
姆姆也许我应该看看鳍状肢。因为我甚至不知道它做了什么。谢谢。我认为再实现是唯一的可能性。我想要的是,以一种形式。回答检查点。完成后发送,然后转到下一个checkpiont,而不返回包含所有检查点的列表视图 –
此外,它还表示qiestion的目标。我不知道如何用新信息刷新小部件。 –
啊.. ofcourse ..太简单了.. :)谢谢。你开了我的眼睛。 –