1

我想從fragmentActivity回到一個片段,但它不工作,我得到NullPointerException,當我打開取消我需要更新以前的片段。我如何回到片段並更新它?不知道爲什麼會發生這種情況。回到從fragmentActivity在Android中的一個片段

public class AddEscolas extends FragmentActivity { 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.addescola); 

     mSessao = new SecurePreferences(AddEscolas.this, "sessao"); 

     pesquisa = (EditText) findViewById(R.id.campo_pesquisa); 
     nomeEscola = (TextView) findViewById(R.id.nomeEscola); 
     logradouro = (TextView) findViewById(R.id.endereco); 
     cidade = (TextView) findViewById(R.id.cidade); 
     procura = pesquisa.getText(); 

     InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(pesquisa.getWindowToken(), 0); 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

     findViewById(R.id.btnProcurar).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       new Pesquisa().execute(); 
       mFerramentas.hideKeyboard(AddEscolas.this, pesquisa); 

      } 
     }); 

     findViewById(R.id.btnCancelar).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       FragmentManager fragmentManager = getFragmentManager(); 
       fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); 
      } 
     }); 



    } 
} 

FragmentClass:

public class EscolasFragment extends Fragment { 



    @Override 
    public View onCreateView(final LayoutInflater inflater, final ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_escolas, container, false); 

     ImageView add = (ImageView) rootView.findViewById(R.id.add); 


     mSessao = new SecurePreferences(getActivity(), "sessao"); 

     add.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Intent addIntent = new Intent(getActivity(), AddEscolas.class); 
       startActivity(addIntent); 

      } 
     }); 


     return rootView; 
    } 
} 
+0

有你在做什麼沒有意義的......你應該通過有關片段 –

+0

Android的文檔閱讀,你可以請提供空指針異常 – Vikas

+0

的堆棧跟蹤你想從活動開始片段內。這很令人困惑,因爲片段是活動的一部分,它如何啓動它。片段可以使用回調與活動進行對話。 – Vikas

回答

1

假設你只需要調用finish(),像這樣:

findViewById(R.id.btnCancelar).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       finish(); 
      } 
     }); 

的原因NullPointerException異常可能是R的佈局ID在AddEscolas活動中找不到id.content_frame。

如果需要AddEscolas活動退出後更新EscolasFragment片段,你可以做如下步驟:

  1. 使用startActivity()從EscolarFragment片段致電AddEscolas活動。
  2. 在包含EscolarFragment片段的活動中使用onActivityResult()來提取由AddEscolas活動返回的結果。
  3. 使用EscolarFragment片段中的onResume()更新UI。
+0

我不能簡單地叫完,我需要更新EscolaFragment當我回到它 – AND4011002849

+0

請看我編輯的答覆。 – Zephyr

-1

只需在FragmentActivity中調用onBackPressed();即可。

0

你對FragmentActivity的內容有錯誤的想法。活動主持片段。你不能沒有活動就去分割。閱讀docs

空指針異常來自

fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); 

你需要給實例「片段」。 Somehing像:

Fragment fragment = new YourFragment(); 
相關問題