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

Posted

技术标签:

【中文标题】如何从另一个布局中获取按钮的文本值?【英文标题】:How to get the text value of a button from another layout? 【发布时间】:2015-08-01 09:28:27 【问题描述】:

首先,我在论坛上搜索了“如何从其他布局的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 /strong>。

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

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

希望各位指导尽快帮帮我!

非常感谢。

【问题讨论】:

您可以创建一个static 变量并将结果存储在那里,然后从您的dialog 访问它 你能说得清楚一点吗?在该函数中在哪里声明静态变量? 从哪里获得父布局中的按钮文本?当您尝试访问它时,可能尚未设置文本 我可以确保在diablog调用后,父布局中的按钮文本设置成功,并立即显示。 【参考方案1】:

您可以创建一个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
    

【讨论】:

感谢您的帮助!我现在正在尝试。

以上是关于如何从另一个布局中获取按钮的文本值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jquery 从表 td 列复制文本/数字以从另一个 td 列输入值?

如何从另一个活动中编辑和获取 editText 输入字段的更新?

Kivy:从另一个类的小部件中检索文本?

如何从另一个类中获取字符串变量

如何从另一个输入文本字段Javascript中输入的值将值设置为输入隐藏字段

在编辑另一个文本字段 vue.js 时获取计算属性并传递其值