如何将文本从活动发送到其他活动的片段

时间:2016-08-10 17:54:03

标签: android android-studio android-fragments

  

我有两个活动" 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

2 个答案:

答案 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()获取第二个活动中的数据,然后将数据传递给片段。