У меня есть EditText
на моем Activity2
и я хочу использовать его на моем Activity1
Fragment
. Используя interfaces
, я придумал:
В моем Activity2
я определил и инициализировал interface
:
private OnEditTextData onEditTextData;
public interface OnEditTextData{
void sendEdtData(String str);
}
, затем в onCreate
я вызываюinterface
метод на моем EditText
после присоединения interface
:
public class Activity2 extends AppCompatActivity {
private EditText editText;
private OnEditTextData onEditTextData;
public interface OnEditTextData{
void sendEdtData(String str);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
editText = findViewById(R.id.edit_text);
btn_next = findViewById(R.id.btn_next);
btn_previous = findViewById(R.id.btn_previous);
btn_previous.setVisibility(View.GONE);
.
.
Fragment fragment = new Fragment();
onEditTextData = fragment;
btn_previous.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
.
.
}
}
});
btn_next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
.
onEditTextData.sendEdtData(editText.getText().toString());
.
}
}
});
.
.
}
}
Теперь в моем Activity1
Fragment
я реализовал interface
, и так как я хочу сохранить его с общими настройками...:
public class Fragment extends Fragment implements Activity2.OnEditTextData {
public static final String PREFS_NAME = "MyPrefsFile";
.
.
@Override
public void sendEdtData(String str) {
SharedPreferences settings = this.getActivity().getSharedPreferences("MyPrefsFile", 0);
Editor editor = settings.edit();
editor.putString("string", str);
editor.apply();
}
}
Я пытался использовать Logs
, чтобы проверить, пришла ли моя строка в Fragment
, и это произошло. Но всякий раз, когда я использую его для чего-то другого, например, для общих настроек, я получаю ошибку NullPointer:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences androidx.fragment.app.FragmentActivity.getSharedPreferences(java.lang.String, int)' on a null object reference
Это также происходило, когда я пытался добавить строку в List
.