Android - 如何在当前对话框之外设置项目的文本()

时间:2014-08-22 11:37:13

标签: android button dialog

我有一个调用对话框的按钮。从那个按钮我有8个按钮:1,2,3,4,5,6,7,并取消。这些按钮将用于更改按钮的文本。问题是,如果我在对话框中设置文本,它就不会做任何事情。

buttonDefineHits = (Button) rowView.findViewById(R.id.button_define_hits);
        buttonDefineHits.setOnClickListener(new View.OnClickListener() {              
            @Override
            public void onClick(View v) {
                //Dialog 1-7 i x para definir los holes
                setDialogSetHits();

            }
        });

private void setDialogSetHits(){
    final Dialog dialogConfirmPlayers = new Dialog (activity);
    dialogConfirmPlayers.setCancelable(false); 
    dialogConfirmPlayers.setContentView(R.layout.dialog_set_hits);

    Button button1Hit = (Button) dialogConfirmPlayers.findViewById(R.id.button_1_hit);
    button1Hit.setOnClickListener(new View.OnClickListener() {            
        @Override
        public void onClick(View v) {
            //Dialog 1-7 i x para definir los holes
            buttonDefineHits.setText("1");
            dialogConfirmPlayers.cancel();
        }
    });
    dialogConfirmPlayers.show();
}

2 个答案:

答案 0 :(得分:0)

您可以从dialogBox中设置活动中定义的按钮文本。我猜Aniruddha的评论错了。我的意思是,只要在其上显示对话框,用户就无法使用Activity的UI元素进行“迭代”,但是以编程方式,您可以在活动中更改Button的Text属性。为了确认,这就是我的尝试:

  1. 在ImageView的Click事件上创建了一个Dialog。
  2. 从对话框按钮的Click侦听器中,我更改了Activity中的editText文本。
  3. 同样,您还应该能够从对话框按钮的单击侦听器设置按钮的文本。

    我认为您应该从对话框中删除7个按钮,并且出于测试目的,只需要一个按钮。然后处理此按钮上的click事件并尝试n设置Activity按钮的Text。这应该像魅力一样。

    之后您可以集成7个按钮。

答案 1 :(得分:0)

以下是工作示例,您需要相应地修改它

<强> activity_main.xml中

<RelativeLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:id="@+id/tv1"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/buttonMain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tv1"
        android:layout_below="@+id/tv1"
        android:layout_marginTop="44dp"
        android:text="Button" />

</RelativeLayout>

<强> dialog_view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="OK" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cancel" />

</LinearLayout>

<强> MainActivity.java

public class MainActivity extends Activity {

    TextView t;
    Button bMain;
    Dialog d;

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

         t = (TextView) findViewById(R.id.tv1);
         bMain = (Button) findViewById(R.id.buttonMain);




        bMain.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                 d = new Dialog(MainActivity.this);

                    d.setTitle("Hello Android..!");

                    d.setContentView(R.layout.dialog_view);

                    Button bOK = (Button) d.findViewById(R.id.button1);
                    Button bCancel = (Button) d.findViewById(R.id.button2);
                d.show();

                bOK.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        // TODO Auto-generated method stub
                        t.setText("OK");
                        bMain.setText("Changed the text");
                        d.cancel();
                    }
                });

            }
        });


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}