如何使用putExtra和putIntent作为字符串

时间:2014-02-15 13:41:12

标签: java android string send

我对putExtra有很多了解,但我的应用程序仍无效(应用程序关闭) 我只想将我的editText中的字符串值从MainActivity发送到AnotherActivity textView。 这是我的MainActivity.java。

public class MainActivity extends Activity {

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

    final EditText et = (EditText)findViewById(R.id.tv);

    Button bn = (Button)findViewById(R.id.button1);
    bn.setOnClickListener(new OnClickListener() {

              public void onClick(View arg0) {
                    Intent intent = new Intent(getApplicationContext(), AnotherActivity.class);
                    intent.putExtra("text", et.getText().toString());
                    startActivity(intent);
              }
        });
}}

这是我的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" >

<EditText
    android:id="@+id/et"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignRight="@+id/button1"
    android:ems="10"
    android:inputType="text"
    android:text="@string/hello_world" >

    <requestFocus />
</EditText>

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/et"
    android:layout_marginLeft="18dp"
    android:text="@string/hello_world" />

这是我的AnotherActivity.java

enter code here

公共类AnotherActivity扩展了Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_another);

    String name = getIntent().getStringExtra("text");

    TextView tv = (TextView)findViewById(R.id.tv);
    tv.setText(name);
}}    

这是我的activity_another.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=".AnotherActivity" >

<TextView
    android:id="@+id/tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginRight="107dp"
    android:layout_marginTop="190dp"
    android:text="@string/title_activity_another" />

谢谢你的回答。我是新手:)

1 个答案:

答案 0 :(得分:3)

别担心,您已正确理解如何使用Intent附加功能。

问题是,您正试图在第一个EditText的第二个Activity布局中找到Activity(ID为R.id.tv)布局,这导致NullPointerException中的OnClickListener

更改第一个Activity的这一行:

final EditText et = (EditText)findViewById(R.id.tv);

为:

final EditText et = (EditText)findViewById(R.id.et);