2016-06-22 20 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> 
相關問題