4

Android Dev は初めてなので、点と点をつなぐのに苦労しています。さまざまなフラグメント、アクティビティ、クラスから特定の ID に到達する方法に行き詰まることがよくあります。

例えば。

フィールドをDialogFragment含む がありEditTextます。そのフィールドにテキストを追加し、クリック時にその文字列をListView親の a に送信したいFragmentActivity

FragmentActivityがどこにあるかのコードは次のとおりListViewです。

public class NewActivity extends FragmentActivity implements AddSiteDialog.AddSiteClick {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.add_site);


    Button b = (Button) findViewById(R.id.addSiteButton);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showDialog();
        }
    });

    ListView siteListView = (ListView) findViewById(R.id.siteList);


}

public void showDialog() {

    DialogFragment newFragment = new AddSiteDialog();
    newFragment.show(getSupportFragmentManager(), "Dialog");

}

public void onSignIn(DialogFragment dialog) {

}

}

ここが彼らのDialogFragment生きるEditText場所

public class AddSiteDialog extends DialogFragment {

public interface AddSiteClick {
    public void onSignIn(DialogFragment dialog);
}
AddSiteClick addSiteClick;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    Rect displayRectangle = new Rect();
    Window window = getDialog().getWindow();

    getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
    window.getDecorView().getWindowVisibleDisplayFrame(displayRectangle);

    LayoutInflater layoutInflater = getActivity().getLayoutInflater();

    final View view;
    view = layoutInflater.inflate(R.layout.main, null);

    view.setMinimumWidth((int) (displayRectangle.width() * 0.95f));
    view.setMinimumHeight((int) (displayRectangle.height() * 0.88f));

    final EditText editText = (EditText) view.findViewById(R.id.siteEditText);

    editText.setHint("Enter URL");

    editText.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            editText.setCursorVisible(true);
            editText.setHint("");
           }
    });

    ((Button) view.findViewById(R.id.sign_in_button)).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            addSiteClick.onSignIn(AddSiteDialog.this);
        }
    });

    ((Button) view.findViewById(R.id.cancel_button)).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            getDialog().dismiss();

        }
    });
    return view;
}

物事が互いにどのように通信するかについての適切な説明は、大きな助けになります。この特定のタスクがどのように連携するかのコード例も素晴らしいでしょう。

前もって感謝します!

4

1 に答える 1

4

理想的には、アクティビティは、フラグメントの実装方法について特定のことを知る必要はありません。そのため、フラグメント/アクティビティが通信する方法は、インターフェイスとフラグメントのパブリック メソッドを介して行われます。そのすべては、開発者ガイドのこのセクションでカバーされています。

簡単に言うと、単一のメソッド (onUserDataEntered など) を使用してダイアログでインターフェイスを定義し、それをアクティビティに実装します。ユーザーがダイアログのボタンをクリックすると、 が呼び出されonUserDataEntered(theData)ます。

于 2013-02-11T22:35:45.280 に答える