Получить данные из EditText из фрагмента в деятельность - PullRequest
1 голос
/ 23 июня 2019

Мне нужно передать данные String от EditTexts от Fragment до Activity, я знаю, что должен использовать interface.Но у меня все еще та же ошибка (Null Object).Можете ли вы сказать мне, как это исправить?Вот мой код:

Main Activity

public class IntroActivity extends AppCompatActivity implements fragment_intro_activity_2.OnDataPass {

    Button button_intro;
    EditText et;
    boolean showingFirst;
    String wynik;

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

        button_intro = findViewById(R.id.button_intro);
        et = findViewById(R.id.edOperetka);

     FullScreencall();

        getSupportFragmentManager().beginTransaction().replace(R.id.frame_contrainer_intro,
                new fragment_intro_activity_1()).commit();

       showingFirst = true;


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

               if(showingFirst==true){
                   getSupportFragmentManager().beginTransaction().replace(R.id.frame_contrainer_intro,
                           new fragment_intro_activity_2()).commit();
                   showingFirst = false;
               }else {
//
//                   Toast.makeText(IntroActivity.this, "123123",  Toast.LENGTH_SHORT).show();
                   wynik = et.getText().toString();
            onDataPass(wynik);
               }
           }
       });
    }

Fragment

public class fragment_intro_activity_2 extends Fragment {

    View v;
    OnDataPass dataPasser;


    public fragment_intro_activity_2() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        v = inflater.inflate(R.layout.fragment_fragment_intro_activity_2, container, false);
        return v;
    }
    public interface OnDataPass {
         void onDataPass(String data);
    }


    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        dataPasser = (OnDataPass) context;
    }
    public void passData(String data) {
        dataPasser.onDataPass(data);
    }

}

Logcat

Process: com.example.wynagrodzeniedodatkowe, PID: 32263
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
        at com.example.wynagrodzeniedodatkowe.IntroActivity$1.onClick(IntroActivity.java:54

И это 54строка такая: wynik = et.getText().toString();

1 Ответ

0 голосов
/ 23 июня 2019

Глядя на сообщение logcat, он говорит мне, что следующая строка

findViewById(R.id.edOperetka)

Возвращает ноль, поэтому убедитесь, что идентификатор правильно создан в XML и правильно ссылается на код (что это тот же идентификатор).

Если вы не хотите извлекать EditText из вашего фрагмента, вы можете сделать следующее.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    v = inflater.inflate(R.layout.fragment_fragment_intro_activity_2, container, false);

    EditText et = v.findViewById(R.id.edOperetka);

    return v;
}

Теперь вы можете получить текст, как и раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...