我有两个活动" Name_Status"和" Main_activity"。 在Main_activity中,我是片段。我想从Name_Status活动发送一个字符串值到Main_activity片段之一。
以下是Name_Status活动的方法:
@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");
MainActivity obj=new MainActivity();
Log.d("obj created", "obj created");
obj.changeMainName(name);
Log.d("obj.changename", "obj.changename");
}
}
通过使用这种方法,我首先将数据发送到Main_activity,然后从那里将数据发送到片段,如下所示。
以下是Main_activity的代码:
public void changeMainName(String s) {
FragActivity1 obj = (FragActivity1) getSupportFragmentManager().findFragmentById(R.id.person_profile); obj.changeName(s);
}
现在我从这里开始将字符串值发送到片段类,并且我只将字符串设置为textview,如下所示:
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());
}
我正在
obj.changeMainName(name);
的NullPointerException
答案 0 :(得分:3)
你必须做一些接力。例如,您有活动A没有片段,活动B有片段。在Android框架上,您可以先将数据传递到活动A到B,然后从活动B传递数据到视图层次结构后面的片段。
在活动A.执行以下操作
Intent intent = new Intent(this, ActivityB.class);
intent.putExtra("key", "value");
startActivity(intent);
现在在活动B中,从活动A获取数据
String stringValue= getIntent().getStringExtra("key");
然后将您的Fragment数据作为参数传递给Frag
Bundle bundle = new Bundle();
bundle.putString("key", stringValue);
ActivityBFrag fragment = new ActivityBFrag();
fragment.setArguments(bundle);
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(container, fragment, tag);
transaction.addToBackStack(tag);
transaction.commit();
然后在Fragment类中。无论何时你想访问你的数据,都可以得到类似下面的数据,可以在onCreate,OnActivityCreated等里面。
public void getArguments(){
Bundle bundle = getArguments();
if(bundle != null){
String stringValue = bundle.get("key");
}
}
答案 1 :(得分:2)
通过Intent
捆绑包将数据发送到第二个活动。然后通过getIntent().getExtras()
获取第二个活动中的数据,然后将数据传递给片段。