0

我有一个用户在 EditText 框中输入信息,例如 UPC,然后单击它旁边的按钮。当他们单击按钮时,如何从框中获取文本以传递给我的其他活动?我假设我使用 Intent 来启动活动。

编辑文本元素:

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/textView1"
    android:cursorVisible="true"
    android:ems="10"
    android:inputType="text" />

搜索按钮代码:

<Button
    android:id="@+id/button2"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/editText1"
    android:layout_below="@+id/textView1"
    android:layout_toRightOf="@+id/textView1"
    android:onClick="onClickSearch"
    android:text="@string/search" />

main.java 中的代码:

public void onClickSearch(View view) { 

        String UPC = R.id.editText1.getText().toString();
        Intent intent = new Intent("net.example.glutefree.Networking");   
        intent.putExtra("UPCA", UPC);  //text is some key used to retrieve value in NextActivity 
        startActivity(intent);
    }

如果您需要更多代码,请告诉我

4

2 回答 2

1

你假设正确。这基本上就是你如何做到这一点,具体取决于你拥有和需要什么。但你真的应该阅读这里

String et = editText.getText().toString();
Intent intent = new Intent(CurrentActivity.this, NextActivity.class);   
intent.putExtra("text", et);  //text is some key used to retrieve value in NextActivity 
startActivity(intent);

R.id.editText1返回一个int,这是您的错误的原因。尝试这样的事情

@Override
public void onCreate(Bundle savedInstanceState)
{
     super.onCreate(savedInstanceState);
     setContentView(R.layout.name_of_your_layout);
     EditText editText = (EditText) findViewById(R.id.editText1);
}

然后使用我最初提供的代码。您必须inflate使用然后layout创建setContentView()一个变量,editText在这里,您可能希望在类级别声明它。然后将其初始化为id您在 xml 中设置的值。getText()您拥有它的方式int是,您试图调用R.id.some_id. 一旦有了变量并将其转换为EditTextwith (EditText) findViewById(R.id.editText1);,您就可以调用getText()该变量。

另请注意,setContentView()在尝试访问该 xml 中的 a 之前,您必须像我所展示的那样调用,否则当您尝试使用从 xml 创建的变量时,View您将得到 a ,因为此处存在于NPEViewEditTextlayout

于 2013-04-08T22:21:10.380 回答
1

好的,所以你有了一个良好的开端,重要的部分是:

1) 在活动代码中获取对 EditText 对象的引用:

private EditText mMyEditText;

应该在 onCreate 期间像这样初始化:

mMyEditText = (EditText) findViewById(R.id.editText1);

2)处理点击:

public void onClickSearch(View view) { 

    //String UPC = R.id.editText1.getText().toString(); 
    String UPC = mMyEditText.getText().toString();
    //Intent intent = new Intent("net.example.glutefree.Networking");   
    Intent intent = new Intent(this, YourOtherClass.class);
    intent.putExtra("UPCA", UPC);  //text is some key used to retrieve value in NextActivity 
    startActivity(intent);
}

不同之处在于您调用getText了一个标识符:R.id.editText1,它是一个int,现在,您将访问一个 的实际实例EditText

于 2013-04-08T22:45:16.190 回答