2016-06-22 1 views
1

私はアンドロイドが新しいです。私はEditTextをすべてのアクティビティに表示する必要があるようにします&もし私がそのアクティビティでその内容を変更したら、すべてのアクティビティに反映させるべきです。内容を含むすべてのアクティビティに共通のEditTextを作成するにはどうすればいいですか?

+0

使用フラグメント、および活動のあなたがEDITTEXTで入力されたテキストを保存するためにいずれかのボタンを使用しています 'EditText'の静的 – Sanoop

+1

を作りますか? –

+1

スタティックを見ないでください!メモリリークの危険性があります。共有プリファレンスを作成し、そこに編集テキストの値を格納します。それからすべての活動において、その好みに読み書きするものを断片化する。 – GPuschka

答えて

0

これはフラグメントを使用して実行することができます。フラグメントは再利用可能で、複数のアクティビティにアタッチすることができます。これらのファイルでEditTextを変更すると、フラグメントの単一のxmlおよびjavaファイルがあります。あなたのすべての活動の中で断片を作り、あなたのすべての活動に添付してください。

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に編集テキストを表示することを前提としています。 アクティビティ1はアクティビティ2の前に呼び出されます。 activity1とactivity2両方のレイアウトActivity1 ID ホルダー

のでframeLayoutを有する

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() 

} 



} 

Activity2

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> 
関連する問題