【问题标题】:How to pass EditText parameters to another activity on Android?如何将 EditText 参数传递给 Android 上的另一个活动?
【发布时间】:2014-05-02 19:01:47
【问题描述】:

我有以下 .java 和 .xml 文件的主要功能。

MainActivity.java & fragment_main.xml

public class MainActivity extends ActionBarActivity {

public final static String EXTRA_MESSAGE = "com.mydomain.testpro.MESSAGE";

......

public void sendNumber(View view) {
    // Need an intent to open the results page
    Intent intent = new Intent(this, Result.class);
    EditText editText = (EditText) findViewById(R.id.number1Id);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}
}


<LinearLayout 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:orientation="vertical"
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="com.canavars.testpro.MainActivity$PlaceholderFragment" >

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

<LinearLayout 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/number1" />

    <EditText
        android:id="@+id/number1Id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/editTextHint1"
        android:inputType="number" />  

</LinearLayout>


<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="@string/sendNumber"
    android:layout_gravity="center_horizontal"
    android:onClick="sendNumber" />

 </LinearLayout>

Result.java & fragment_result.xml

public class Result extends ActionBarActivity {

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

    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    // Create the text view
    TextView textView = (TextView)findViewById(R.id.numberId);
    textView.setTextSize(40);
    textView.setText(message);

    // Set the text view as the activity layout
    setContentView(textView);


}

<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="com.canavars.testpro.Result$PlaceholderFragment" >

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

我在哪里犯了错误,正确的方法是什么?

这是错误日志

05-02 13:14:19.729: W/dalvikvm(1161): threadid=1: thread exiting with uncaught exception (group=0xb1a51ba8)
05-02 13:14:19.769: E/AndroidRuntime(1161): FATAL EXCEPTION: main
05-02 13:14:19.769: E/AndroidRuntime(1161): Process: com.canavars.testpro, PID: 1161
05-02 13:14:19.769: E/AndroidRuntime(1161): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.canavars.testpro/com.canavars.testpro.Result}: java.lang.NullPointerException
05-02 13:14:19.769: E/AndroidRuntime(1161):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at android.os.Handler.dispatchMessage(Handler.java:102)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at android.os.Looper.loop(Looper.java:136)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at android.app.ActivityThread.main(ActivityThread.java:5017)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at java.lang.reflect.Method.invokeNative(Native Method)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at java.lang.reflect.Method.invoke(Method.java:515)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at dalvik.system.NativeStart.main(Native Method)
05-02 13:14:19.769: E/AndroidRuntime(1161): Caused by: java.lang.NullPointerException
05-02 13:14:19.769: E/AndroidRuntime(1161):     at com.canavars.testpro.Result.onCreate(Result.java:28)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at android.app.Activity.performCreate(Activity.java:5231)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-02 13:14:19.769: E/AndroidRuntime(1161):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
05-02 13:14:19.769: E/AndroidRuntime(1161):     ... 11 more

【问题讨论】:

  • MainActivity.java 类中的 onCreate() 方法在哪里?
  • 您是否尝试过直接使用字符串而不是引用它们?不知道这是否重要,只是从来没有那样做:P
  • setContentView(textView); 这可能吗?
  • 我已将上面的错误日志贴在帖子上。
  • Result.java 的第 28 行是什么。我猜是setContentView(textView);

标签: java android xml android-activity


【解决方案1】:

错误是通过传递 TextView 而不是布局来设置 Activity 的内容视图。我猜你正在尝试更新 xml 的内容。这不是它的工作原理。

删除

setContentView(textView);

你的应用应该可以正常运行。

【讨论】:

  • 堆栈跟踪显示NullPointerException,此答案无法解决。实际上,即使您声称无法将TextView 设置为内容视图的声明也是错误的。这样做完全没问题。然而,在这种情况下的问题是 TextView 已经有一个父级,并且 that 也会使应用程序崩溃。不过,这并不能解决问题。
  • 如果没有setContentView(textView);,它就无法工作,或者我很遗憾应用程序停止工作......
【解决方案2】:

Eclipse IDE 存在问题。转移到 Android Studio,它就像一个魅力,没有任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 2011-11-07
    • 1970-01-01
    相关资源
    最近更新 更多