如何从另一个布局获取按钮的文本值?

时间:2015-05-20 08:40:04

标签: android android-layout android-relativelayout

首先,我在论坛中搜索了“如何从其他布局中的edittext获取文本”,并尝试了很多其他方法,然后我决定使用 LayoutInflater 但它没有帮助。

LayoutInflater的实现(我遵循本指南)

LayoutInflater factory = getLayoutInflater();
View regisText = factory.inflate(R.layout.regis, null);
EditText user = (EditText) regisText.findViewById(R.id.edt1); 
String usr = user.getText().toString(); 

我的父布局名为 activity_input.xml ,有3个按钮(我没有设置文本按钮)。我只放了按钮ID 以便于查看。

<Button
    android:id="@+id/btn1">
</Button>

<Button
    android:id="@+id/btn2">
</Button>

<Button
    android:id="@+id/btn3">
</Button>

单击按钮后,会出现一个对话框,选择值(1,2或3)到设置 activity_input.xml中的按钮显示文本(1,2或3) /强>

final Dialog dialog1 = new Dialog(user_input.this);
            dialog1.setTitle("Select a Number");
            dialog1.setContentView(R.layout.game_dialog);
            dialog1.show();

            button1 = (Button) dialog1.findViewById(R.id.btn1);
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Button p1_btn = (Button) findViewById(x);
                    p1_btn.setText("1");
                    dialog1.dismiss();
                }
            });

onClick 效果很好。

但我的问题是我想再次获取父布局中的按钮文本,我尝试实现Layoutinflater但它不起作用,这里是代码。

LayoutInflater f1 = getLayoutInflater();
    View v1 = f1.inflate(R.layout.activity_input, null);
    Button btn1 = (Button) v1.findViewById(R.id.b1);
    String t1 = btn1.getText().toString();

我检查以确保通过打印字符串成功检索字符串t1 ,但它没有显示任何内容

希望你指导我尽快帮助我!

非常感谢你。

1 个答案:

答案 0 :(得分:0)

您可以创建一个static变量并将结果存储在那里,然后从对话框中访问它。所以在 ActivityInput.java

public class ActivityInput extends Activity {

    public static String input = "";

    //code

    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Button p1_btn = (Button) findViewById(x);
            input = "1";
            p1_btn.setText(input);
            dialog1.dismiss();
        }
    });
}

现在在你的其他java类 ActivityOutput.java

public class ActivityOutput extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        //code
        String result = ActivityInput.input;
        //use the result string somewhere to display it in your app
    }
}