2011-10-06 25 views
0

我已經搜索並找不到任何明確的問題。在下一個按鈕和上一個按鈕之間跳轉同一個活動

在我的應用程序中,我有一個活動,您可以回答一個檢查點,發送它並轉到下一個檢查點。用戶應該也可以跳過,並跳回到先前的檢查點。

讓我用一些代碼來支持我的故事。

@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調用完成()後並在開始活動之前,它會導致我的應用程序根本沒有響應。

非常感謝您花時間閱讀這個問題。希望能夠儘快看到如何改變流程的答案或任何建議。謝謝。

回答

2

我可能沒有正確理解你,但是重新實例化導航活動的原因是什麼?你爲什麼不:

  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 ..太簡單了.. :)謝謝。你開了我的眼睛。 –

相關問題