public class FragActivity1 extends Fragment implements View.OnClickListener {
View view;
ImageButton name_change__btn, status_change_btn, profile_change_btn;
ImageView person_dp;
TextView status_field , name_field;
.
.
.
.some code here
Ich habe diese Klasse mit changeName-Methode, die Text einer Textansicht ändert. name_field wird geschrieben als:Kommunikation zwischen Fragment und anderer Aktivität
name_field=(TextView)view.findViewById(R.id.name_field);
Jetzt bin ich diese Methode aus einem Popup-Taste aufrufen, wo ich zur Laufzeit einige String-Wert bin vorbei.
Ich bekomme Nullpointer Ausnahme.
public void changeName(String s)
{
Log.d("changename entry" ,"changename netry");
System.out.println(s);
System.out.println(name_field.getText().toString());
name_field.setText(s);
System.out.println(name_field.getText());
}
Hier ist der Code, der Popup-Klasse:
public class Name_Status extends AppCompatActivity implements View.OnClickListener {
EditText name_change;
RelativeLayout name_status_edit_field;
String name;
Button cancel_name_change , ok_name_change;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.name_status);
DisplayMetrics dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width=dm.widthPixels;
int height=dm.heightPixels;
getWindow().setLayout((int)(width*.8),(int)(height*.3));
name_change=(EditText)findViewById(R.id.change_name);
name_status_edit_field= (RelativeLayout)findViewById(R.id.name_status_edit_field);
cancel_name_change=(Button)findViewById(R.id.cancel_change_name);
ok_name_change=(Button)findViewById(R.id.ok_change_name);
ok_name_change.setOnClickListener(this);
name_change.setOnClickListener(this);
name_status_edit_field.clearFocus();
name_change.setFocusable(true);
//name_change.update();
}
@Override
public void onClick(View v) {
if(v.getId()==R.id.ok_change_name)
{
name=name_change.getText().toString();
System.out.println(name);
Log.d("entered","entred");
FragActivity1 obj=new FragActivity1();
Log.d("obj created", "obj created");
obj.changeName(name);
Log.d("obj.changename","obj.changename");
Intent intent=new Intent();
Log.d("intenthsjjsjs","intent hxjjx");
intent.setClass(Name_Status.this , MainActivity.class);
startActivity(intent);
}
}
}
Ich fand sogar gesucht und dass Fragmente nicht direkt mit anderem Fragmente oder Aktivität kommunizieren können. Aber konnte nicht gut verstehen. Und dieses Popup ist eine neue Aktivität außer der, die mein Fragment enthält. Also, wie zwischen Fragment und anderer Aktivität zu kommunizieren?
Ich hoffe, ich könnte mein Problem gut erklären. Bitte versuchen Sie es in Laiensprache zu erklären.
Sie tun dies 'FragActivity1 obj = new FragActivity1();'. Dies ist ein grundlegender Fehler, den Sie machen. Ich glaube, du versuchst viele Lektionen zu springen. Machen Sie einen Schritt nach dem anderen. – Sufian