2014-11-15 71 views
0

everyone。从输入对话框返回值,android

我正在为我的学校开发一个Android项目,我有几个问题。

我没有太多的开发android应用程序的经验。

所以,让我解释什么,我想做的事:

我希望用户把一些整数,然后当他按下名为“计算”按钮,我的应用程序计算公式,我在我的代码。

我还没有能够使它工作的棘手部分是弹出一个输入对话框(一切正常,直到这里)和他输入的数字出现在主要活动中......在主要活动中,我想更换一个按钮或者一个TextView的文本..

+1

你好塔基斯,欢迎来到StackOverflow。为了更好地帮助我们理解您的问题,请张贴您遇到问题的代码。 – stevebot

+0

'他的文字在主要活动中出现的数字...在主要活动中,我想要替换按钮或文本视图的文字。“因此,您已经获得了该数字并且已经存在于您的主要活动中。你有所有需要的,那么问题是什么? –

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

       } 
+0

好吧,我会尝试它,我让你知道。 –

0

线

result.setText(userInput.getText()); 

导致崩溃的变量 “结果” 为空。 Android不知道你想改变什么。添加

result=(TextView) findViewById(R.id.something); 

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

快乐学习Android!

0

的错误是在这里:

result.setText(userInput.getText()); 

您从userInput的EditText领域得到了文本。但是你不能将文本设置为edittext。你必须设置一个字符串。所以,你必须从userInput获取一个字符串。简单的解决方案是

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