从输入对话框,android返回值

时间:2014-11-15 17:42:36

标签: android

大家。

我正在为我的学校制作一个Android项目,我几乎没有问题。

我在开发Android应用程序方面没有太多经验。

所以,让我解释一下我想做的事情:

我希望用户输入一些整数,然后当他按下名为&#34的按钮;计算"时,我的应用程序会计算我的代码中的等式。

我无法使其工作的棘手部分是弹出一个输入对话框(一切正常,直到这里),他输入的数字出现在主要活动中......在主要活动中我想替换按钮或文本视图的文本..

3 个答案:

答案 0 :(得分:0)

所以这就是代码:

我已经将它运行到我的手机进行测试并出现对话框,但是如果我点击确定它会崩溃。 抱歉,这是我第一次尝试创建Android应用程序。

主Activity.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:background="#ffffff"
    android:gravity="right"
    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.test1.justtesting.MainActivity" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:contentDescription="@string/schematic"
        android:src="@drawable/schematic" />

    <Button
        android:id="@+id/buttonu1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_centerVertical="true"
        android:text="@string/Buttonu1"
        android:onClick="showprompt" />

    <Button
        android:id="@+id/buttonr2"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/imageView1"
        android:layout_below="@+id/buttonr1"
        android:text="@string/Buttonr2" />

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/imageView1"
        android:layout_below="@+id/imageView1"
        android:onClick="calculate"
        android:text="@string/Button1" />

    <Button
        android:id="@+id/buttonr1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/imageView1"
        android:layout_alignTop="@+id/imageView2"
        android:layout_marginTop="48dp"
        android:text="@string/Buttonr1" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/imageView1"
        android:layout_alignLeft="@+id/imageView1"
        android:layout_marginLeft="20dp"
        android:contentDescription="@string/mathtype"
        android:src="@drawable/mathtype" />

    <Button
        android:id="@+id/buttonu2"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/imageView1"
        android:layout_below="@+id/buttonu1"
        android:layout_marginTop="18dp"
        android:text="@string/Buttonu2" />

</RelativeLayout>

主要Activity.java

package com.test1.justtesting;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends ActionBarActivity {

    final Context context = this;
    private EditText result;

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

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }


   public void showprompt (View view) {

                    LayoutInflater li = LayoutInflater.from(context);
                    View promptsView = li.inflate(R.layout.prompts, null);

                    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                            context);


                    alertDialogBuilder.setView(promptsView);

                    final EditText userInput = (EditText) promptsView
                            .findViewById(R.id.editTextDialogUserInput);


                    alertDialogBuilder
                        .setCancelable(false)
                        .setPositiveButton("OK",
                          new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                            // get user input and set it to result
                            // edit text
                            result.setText(userInput.getText());
                            }
                          })
                        .setNegativeButton("Cancel",
                          new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                            dialog.cancel();
                            }
                          });

                    // create alert dialog
                    AlertDialog alertDialog = alertDialogBuilder.create();

                    // show it
                    alertDialog.show();

                }

答案 1 :(得分:0)

该行

 result.setText(userInput.getText());

导致崩溃,因为变量“result”为null。 Android不知道你想要改变什么。添加

 result=(TextView) findViewById(R.id.something);
在你的oncreate方法中

。请注意,必须在设置contentview后执行此操作。您应该学习如何读取控制台以进行调试。

快乐学习Android!

答案 2 :(得分:0)

错误在于:

result.setText(userInput.getText());

您从userInput edittext字段获取了文本。但是您无法将文本设置为edittext。你必须设置一个字符串。所以,你必须从userInput获取一个字符串。简单的解决方案是

result.setText(userInput.getText().toString());