回到Android中fragmentActivity的片段

时间:2015-06-01 14:01:57

标签: android android-intent android-fragments android-fragmentactivity

我试图从fragmentActivity返回一个片段,但它没有工作,我得到了NullPointerException,当我点击取消时,我需要更新上一个片段。我怎样才能回到片段并更新它?不知道为什么会这样。

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;
    }
}

3 个答案:

答案 0 :(得分:1)

假设你只需要调用finish(),就像这样:

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

                finish();
            }
        });

NullPointerException的原因可能是在AddEscolas活动中找不到R.id.content_frame的布局ID。

如果您需要在AddEscolas活动退出后更新EscolasFragment片段,您可以执行以下步骤:

  1. 使用EscolarFragment片段中的startActivity()来调用AddEscolas活动。
  2. 在包含EscolarFragment片段的活动中使用onActivityResult()来提取AddEscolas活动返回的结果。
  3. 使用EscolarFragment片段中的onResume()来更新UI。

答案 1 :(得分:0)

你对FragmentActivity是错误的想法。活动主持片段。没有活动你就不能去片段。阅读docs

空指针异常来自

callV.text = elementCall

你需要为'fragment'提供实例。 Somehing如:

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

答案 2 :(得分:-1)

只需在FragmentActivity中调用onBackPressed();