2016-06-22 18 views
1

我是新来的android。我想要一个EditText,以便它应该对所有活动都可见&如果我在任何活动中更改它的内容,它们应该反映在每个activity.Please给我解决方案... !!!如何为所有活动及其内容创建EditText公用程序?

+0

使用片段,并在活动中让 – Sanoop

+1

你使用任何按钮,保存在EDITTEXT所键入的文本的'EditText'静态? –

+1

请勿使视图静止!你冒着内存泄漏的风险。创建一个共享首选项并在其中存储编辑文本的值。然后在每一个活动中,将任何片段都读取并写入该首选项。 – GPuschka

回答

0

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

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); 
        } 
       } 
      }); 
    } 

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

0

在不同的活动中重复使用相同的片段。 这里的假设是您希望编辑文本显示在活动1和2中。 Activity1将在Activity2之前调用。 两个活性1和活性2的布局具有ID 保持器的的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> 
相关问题