2017-01-25 132 views
-2

嗨即時通訊有打電話給我的方法簽到這是我fragment3問題。我試圖從一個活動中調用它。這是我的代碼在我的活動試圖調用它。在這一行上,我得到一個空指針fragmentTransaction.add(R.id.loginfragment,fragment);我知道我沒有給你很多關於我的代碼的其他信息,但是如果你需要其他任何信息,請告訴我。我正在使用這些進口來釋放我的課程和片段,所以很好。任何建議都會很棒!提前致謝。如何調用片段的方法,從一個活動,讓空

import android.support.v4.app.Fragment; 

import android.support.v4.app.FragmentManager; 

import android.support.v4.app.FragmentTransaction; 

      Fragment3 fragment = (Fragment3) getSupportFragmentManager().findFragmentById(R.id.loginfragment); 
      FragmentManager fm = getSupportFragmentManager(); 
      FragmentTransaction fragmentTransaction = fm.beginTransaction(); 
      getSupportFragmentManager().executePendingTransactions(); 
      fragmentTransaction.add(R.id.loginfragment, fragment); 
      fragmentTransaction.addToBackStack(null); 
      fragmentTransaction.commit(); 

      fragment.signIn(); 

回答

1

你可以使用像EventBus這樣的庫來鏈接代碼。

定義一個實現事件ü要執行如類:LogOutEvent.java

public static class LogOutEvent { /* Additional fields if needed */ } 

U可以使用像後註銷事件從Activity.java以下命令

EventBus.getDefault().post(new LogOutEvent()); 

片段首先需要註冊事件總線

@Override 
public void onStart() { 
    super.onStart(); 
    EventBus.getDefault().register(this); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    EventBus.getDefault().unregister(this); 
} 

,然後在片段您可以訂閱這樣的活動

@Subscribe(threadMode = ThreadMode.MAIN) 
public void onMessageEvent(LogOutEvent event) {/* Do operation here */}; 

更新: 從acitviy做這樣的事情。

ExampleFragment片段=(ExampleFragment)getFragmentManager()findFragmentById(R.id.example_fragment)。 fragment。();

+0

感謝您的建議,但我希望的方式來解決我有什麼了。 –

+0

在最後看到更新 – Vicky

+0

試過了,沒有運氣。同樣的錯誤。 java.lang.NullPointerException:嘗試在空對象引用上調用虛方法'void com.BarTabs.fragment.Fragment3.signIn()' –

2

,因爲我已經沒有什麼片段正在運行當前我會作出這樣的Fragment3不是目前運行的假設想法。

第一件事findFragmentById(R.id.container)將獲取片段容器標識並獲取當前運行在片段容器中的片段。

要添加的片段,並執行簽到功能試試下面這段代碼。

Fragment3 fragment = new Fragment3(); getSupportFragmentManager().beginTransaction.replace(R.id.container,fragment).commit(); fragment.signIn(); 這裏確保id是fragment_container ID而不是片段ID

相關問題