2014-11-15 116 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());