я получаю следующее исключение, пока я пытаюсь передать данные в представление ресайклера:Ресайклер Вид: java.lang.NullPointerException - android.widget.EditText.getText() на нулевой ссылки на объект
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.laraib.dynamicdataapp, PID: 31538
java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
at com.example.laraib.dynamicdataapp.MainActivity$1.onClick(MainActivity.java:55)
at android.view.View.performClick(View.java:4766)
at android.view.View$PerformClick.run(View.java:19683)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5538)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Я создал фрагмент в основной деятельности, где фрагмент , на котором размещается вид ресайзера, и класс адаптера событий привязан к представлению recycler для отображения данных. Данные должны быть переданы динамически. Когда пользователь нажимает кнопку плавающей панели действий, откроется всплывающее окно , где пользователь должен ввести значение в текстовое поле редактирования , а при нажатии кнопки ok данные будут добавлены в вид ресайзера фрагмента.
Вот мой код:
EventFragment.java
public class EventFragment extends Fragment{
List<Event> event=new ArrayList<>();
EventAdapter adapter;
FloatingActionButton fab;
public EventFragment() {}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
final View rootView = inflater.inflate(R.layout.fragment_friend_event, container, false);
final RecyclerView rv = (RecyclerView) rootView.findViewById(R.id.event_recycler_view);
fab = (FloatingActionButton) rootView.findViewById(R.id.floating_bar_event);
rv.setHasFixedSize(true);
LinearLayoutManager ll = new LinearLayoutManager(getActivity());
rv.setLayoutManager(ll);
rv.setItemAnimator(new DefaultItemAnimator());
adapter = new EventAdapter(event,this.getActivity());
rv.setAdapter(adapter);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
((MainActivity) getActivity()).displayDialog();
}
});
return rootView;
}}
MainActivity.java
public class MainActivity extends AppCompatActivity {
EditText event_name;
EditText event_text;
Button saveButton;
RecyclerView rv;
EventAdapter adapter;
List<Event> event=new ArrayList<>();
String s;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setHomeButtonEnabled(true);
Fragment fragmentEvent = new EventFragment();
setTitle("Home");
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, fragmentEvent).commit();
}
public void displayDialog()
{
Dialog dialog = new Dialog(this);
dialog.setTitle("Add Event");
dialog.setContentView(R.layout.popup_events);
event_text = (EditText) findViewById(R.id.editText_msg);
event_name = (EditText) findViewById(R.id.editText_name);
rv = (RecyclerView) findViewById(R.id.event_recycler_view);
saveButton = (Button) dialog.findViewById(R.id.button_ok);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// save(event_name.getText().toString());
s = event_name.getText().toString();
event_name.setText("");
adapter = new EventAdapter(EventData.getEventData(s),MainActivity.this);
Log.d("username", event_name.getText().toString());
rv.setAdapter(adapter);
}
});
dialog.show();
}}
EventData.java
public class EventData {
public static List<Event> getEventData(String e)
{
List<Event> data = new ArrayList<>();
Event item = new Event();
item.setEventText(e);
data.add(item);
Log.d("method invoked", e);
return data;
}
}
EventAdapter.java
public class EventAdapter extends RecyclerView.Adapter<EventAdapter.EventViewHolder> {
private List<Event> eventData;
private LayoutInflater inflater;
public EventAdapter(List<Event> eventData, Context context){
inflater = LayoutInflater.from(context);
this.eventData = eventData;
}
@Override
public EventViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.content_events, parent, false);
EventAdapter.EventViewHolder vh = new EventAdapter.EventViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(EventViewHolder holder, final int position) {
holder.eventTextView.setText(eventData.get(position).getEventText().toString());
Log.i("CALL","Button adapter is invoked");
}
@Override
public int getItemCount() {
return eventData.size();
}
public static class EventViewHolder extends RecyclerView.ViewHolder {
public CardView eventCardView;
public TextView eventTextView;
public EventViewHolder(View itemView)
{
super(itemView);
eventCardView = (CardView) itemView.findViewById(R.id.event_card_view);
eventTextView = (TextView) itemView.findViewById(R.id.event_text);
}
}
public void add(Event item,int position)
{
eventData.add(item);
notifyItemInserted(position);
}
public void remove(Event item)
{
int position = eventData.indexOf(item);
eventData.remove(position);
notifyItemRemoved(position);
}}
popup_event.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:layout_height="10dp"
android:layout_width="match_parent"></View>
<TextView
android:layout_height="30dp"
android:layout_width="match_parent"
android:text="Add Event"
android:textSize="25dp"
android:textAlignment="center"
/>
<View
android:layout_height="10dp"
android:layout_width="match_parent"></View>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="30dp"
android:text="Name:"
android:textSize="20dp"
android:id="@+id/textView_name"
android:layout_column="1"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="30dp"
android:id="@+id/editText_name"
android:layout_column="2"/>
</TableRow>
<View
android:layout_height="10dp"
android:layout_width="match_parent"></View>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="30dp"
android:text="Date:"
android:textSize="20dp"
android:id="@+id/textView_msg"
android:layout_column="1"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="30dp"
android:id="@+id/editText_msg"
android:layout_column="2"/>
</TableRow>
<View
android:layout_height="10dp"
android:layout_width="match_parent"></View>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OK"
android:id="@+id/button_ok"
android:layout_column="3" />
</TableRow>
</TableLayout>