如何为包含其内容的所有活动创建通用的EditText?

时间:2016-06-22 07:27:31

标签: android

我是android新手。我想要一个EditText,以便所有活动都能看到它。如果我在任何活动中改变其内容,他们应该反映每一项活动。请给我解决方案...... !!!

3 个答案:

答案 0 :(得分:0)

这可以使用片段完成,片段可以重复使用,并且可以附加到多个活动,片段有一个xml和java文件,当你在这些文件中更改EditText时,会在你的所有活动,所以制作片段并将其附加到你的所有活动中。

答案 1 :(得分:0)

如果要使用所有活动,可以创建静态变量

public class Utils {
    public static String myString;
}

在开始另一项活动之前,您可以设置变量

Utils.myString = editText.getText().toString();

然后在每个活动的onResume上,您可以获取变量并将其设置为EditText

    @Override
    protected void onResume() {
        super.onResume();
        editText.post(new Runnable() {
                @Override
                public void run() {
                    if (editText!= null) {
                        editText.setText(Utils.myString);
                    }
                }
            });
    }

但我建议你应该使用片段就是这种情况。这很容易。

答案 2 :(得分:0)

在不同的活动中重复使用相同的片段。 这里的假设是您希望编辑文本显示在活动1和2中。 Activity1将在Activity2之前调用。 activity1和activity2的布局都有一个id holder

的framelayout

<强>活性1

public class Activity1 extends Activity{

public static Fragment editTextFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_group);

        ...

        editTextFragment = new EditTextFragment();

        FragmentManager fm = getFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.holder, editTextFragment);
        ft.commit()

}



}

<强>活性2

public class Activity2 extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_group);
        ...
        FragmentManager fm = getFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.holder, Activity1.editTextFragment);
        ft.commit()
}

}

<强> EditTextFragment.java

public class EditTextFragment extends Fragment {
    public testFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_edittext, container, false);
    }

}

<强>布局/ fragment_edittext.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.editTextFragment">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</FrameLayout>