Ich erstelle eine einfache Anwendung Kommunikation Fragment, aber wenn ich die App laufen wil es sagenFragment Interface-Methode nicht aufrufen
Attempt to invoke interface method 'void com.example.owner.fragcom.fragment_one$OnnamesetListener.setname(java.lang.String)' on a null object reference
Ich denke, das Problem mit setname Methode, aber ich did't nicht, was schief gehen Kann mir jemand sagen, dass das Problem ist, dass ich meinen Code hier unten einfügen.
public class fragment_one extends Fragment {
EditText etd;
Button button;
OnnamesetListener onnamesetListener;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_one_layout,container,false);
etd = (EditText)view.findViewById(R.id.frag_one);
button =(Button)view.findViewById(R.id.send);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = etd.getText().toString();
onnamesetListener.setname(name);
}
});
return view;
}
public interface OnnamesetListener{
public void setname(String name);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
onnamesetListener = (OnnamesetListener) context;
}catch (Exception e){}
}
}
dies ist mein Code für Fragment eines hier i ein Bearbeiten von Text gesetzt und diesen Wert übergeben zwei durch Haupttätigkeit fragmentieren.
Haupttätigkeit
public class MainActivity extends AppCompatActivity implements fragment_one.OnnamesetListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void setname(String name) {
fragment_two f2 =(fragment_two) getFragmentManager().findFragmentById(R.id.fragment_two);
f2.UpdateInfo(name);
}
}
Fragment Zwei
public class fragment_two extends Fragment {
TextView textView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_two_layout,container,false);
textView = (TextView)view.findViewById(R.id.textView);
return view;
}
public void UpdateInfo(String name)
{
textView.setText(name);
}
}
kann mir jemand sagen, was das Problem ist, warum ich diese Art von Fehler bekam und welche Änderungen Ich mache in meinem Code. Jeder Vorschlag ist willkommen.
Absturz noch Attempt to Interface-Methode ‚Leere com.example.owner.fragcom.fragment_one $ OnnamesetListener.setname (java.lang.String)‘ auf ein Null-Objekt Verweis aufrufen –
Sie wahrscheinlich bewegen Handler wollen außerhalb des Sagens onCreateView, wie zuvor, onActivityCreated (Bundle), das dem Fragment mitteilt, dass seine Aktivität seine eigene Activity.onCreate() abgeschlossen hat. und ich würde den Debugger verwenden und durch den Prozess gehen, um zu sehen, wo Ihr OnnamesetListener Null ist und wann es eine Referenz hat. – Darxval