2016-07-12 47 views
0
  1. 你好,所以我跟着Android開發者網站創建了一些 簡單的標籤在Android的片段。這些標籤完全可以工作,並且 顯示他們應該的內容。但是,我現在正在嘗試 與此AndroidHive Login tutorial整合它。我有 正確設置了XML,並且登錄tutorail 的MainActivity現在顯示在我的第一個選項卡上。現在我想建立的onclick 偵聽註銷​​按鈕,但似乎我的意圖PARAMS不 工作,也是終點方法不起作用:帶片段的Onclck聽衆

    private void logoutUser() { 
    session.setLogin(false);  
    db.deleteUsers(); 
    Intent intent = new Intent(OneFragment.this, LoginActivity.class);  
    startActivity(intent); 
    finish(); 
    }  
    

    我猜它做事實上,我的問題不是 活動?

    public class TabOne extends Fragment implements View.OnClickListener {.....} 
    
  2. 另外,我不完全按照他的教程和我的編碼項目我怎麼喜歡它(我一直在大學2個葉芝現就讀純Java)的一些元素。但是在他的MainActivity類中,他必須具有以下變量(這些類可以在他的登錄教程中獲得)
    • private SQLiteHandler db;
    • 私人SessionManager會話;

他initalises他們在OnCreate如下:

db = new SQLiteHandler(getApplicationContext()); 
    session = new SessionManager(getApplicationContext()); 

但是,因爲我使用的片段,而不是活動,經過了這麼一些研發這個我試過,我不能這樣做:

db = new SQLiteHandler(getActivity().getApplicationContext()); 

    session = new SessionManager(getActivity().getApplicationContext()); 

它已經取消了對Android Studio中的錯誤,但我不是100%肯定它會工作(我仍然有我的代碼上面的錯誤,所以我無法測試) - 你能否澄清一下,如果這也能起作用 - 他所有的課程也都在上面的鏈接中,包括會話和sqllite。

編輯1 - 對不起,我應該補充這一點,我使用的情況,並要求註銷方法:

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btnLogout: 
      logoutUser(); 
    } 
} 

謝謝,如果需要任何進一步的信息請諮詢我將更新這篇文章

+0

這是一個很好的做法,在每個案件後使用break語句。看看我的答案,它應該解決你的問題。 –

+0

@Salvatory Baya啊對不起,我忘了添加break語句 – AmberHelpSK

回答

0

您必須從片段訪問您的主要活動上下文才能調用屬於活動類的方法。爲你的情況使用以下

private void logoutUser() { 
    session.setLogin(false);  
    db.deleteUsers(); 
    Intent intent = new Intent(getActivity(), LoginActivity.class);  
    startActivity(intent); 
    getActivity().finish(); 
} 
+0

我真的很感謝這段代碼,它解決了我的問題。很抱歉,我仍然在學習android開發的基本問題 - 當我們說getActivity()時它怎麼知道去MainActivity?再次非常感謝!這工作 – AmberHelpSK

+0

@AmberHelpSK每個片段由一個活動託管,Android跟蹤與其關聯片段的所有活動。因此,當您從片段中調用getActivity()時。它會知道要獲取哪個活動上下文。 –

+0

啊很有道理感謝這個謝謝 – AmberHelpSK

0

我不知道我的方式獲取應用程序的上下文是正確的方式,但我已創建一個公共方法在我的MainActivity(顯示碎片),返回應用程序上下文。如果你走這條路線,你可以調用MainActivity.getContext()(或你方法的名稱),並可以在你的片段中獲得該Activity的上下文。

+0

我試試這個,儘管沒有完全理解 – AmberHelpSK