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
我这个包含changeName方法的类正在改变textview的文本。 name_field写为:
name_field=(TextView)view.findViewById(R.id.name_field);
现在我从弹出按钮调用此方法,我在运行时传递一些字符串值。
我得到了nullpointer异常。
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());
}
以下是弹出类的代码:
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);
}
}
}
我甚至搜索并发现片段无法与其他片段或活动直接通信。但无法理解。这个弹出窗口是一个新的活动,而不是包含我片段的活动。那么如何在片段和其他活动之间进行交流呢?
希望我能很好地解释我的问题。请尝试用外行语言解释。
答案 0 :(得分:0)
您应该使用LocalBroadcastManager在两个活动之间进行通信 这个概念很简单,可以在下面链接中轻松实现
答案 1 :(得分:0)
我建议您使用EventBus在片段和活动之间进行通信 https://github.com/greenrobot/EventBus
答案 2 :(得分:0)