在下一个按钮和上一个按钮之间跳转同一个活动

问题描述:

我已经搜索并找不到任何明确的问题。在下一个按钮和上一个按钮之间跳转同一个活动

在我的应用程序中,我有一个活动,您可以回答一个检查点,发送它并转到下一个检查点。用户应该也可以跳过,并跳回到先前的检查点。

让我用一些代码来支持我的故事。

@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调用完成()后并在开始活动之前,它会导致我的应用程序根本没有响应。

非常感谢您花时间阅读这个问题。希望能够尽快看到如何改变流程的答案或任何建议。谢谢。

我可能没有正确理解你,但是重新实例化导航活动的原因是什么?你为什么不:

  1. 只需刷新你的小部件与用户导航时的新检查点的信息?
  2. 或使用ViewFlipper在同一活动内的视图之间导航?
  3. 或使用ViewPager来使用用户可以使用手势导航的片段?

编辑
你说你不知道如何刷新新的信息的部件。这应该相当容易。

您有用于导航按钮的事件处理程序,因此您可以确定新的检查点以及要显示的数据。视图中显示检查点特定数据的每个控件都必须为新检查点进行更改。

例如,检查点的名称可以显示在TextView内。然后,你就必须更新TextView这样的:

TextView checkPointTitle = (TextView)findViewById(R.id.checkPointTitle); 
checkPointTitle.setText(newCheckPointTitle); 

您可以创建一个需要检查点的ID的方法(可能是指数是检查点或数据库ID或者其他对象的列表)并更新控件。然后在确定要显示的检查点的ID后,从previousCheckPointnextCheckPoint方法中调用此方法。当然,当第一次检查点首次显示活动时,您也会调用此方法。

+0

姆姆也许我应该看看鳍状肢。因为我甚至不知道它做了什么。谢谢。我认为再实现是唯一的可能性。我想要的是,以一种形式。回答检查点。完成后发送,然后转到下一个checkpiont,而不返回包含所有检查点的列表视图 –

+0

此外,它还表示qiestion的目标。我不知道如何用新信息刷新小部件。 –

+0

啊.. ofcourse ..太简单了.. :)谢谢。你开了我的眼睛。 –