everyone。從輸入對話框返回值,android
我正在爲我的學校開發一個Android項目,我有幾個問題。
我沒有太多的開發android應用程序的經驗。
所以,讓我解釋什麼,我想做的事:
我希望用戶把一些整數,然後當他按下名爲「計算」按鈕,我的應用程序計算公式,我在我的代碼。
我還沒有能夠使它工作的棘手部分是彈出一個輸入對話框(一切正常,直到這裏)和他輸入的數字出現在主要活動中......在主要活動中,我想更換一個按鈕或者一個TextView的文本..
everyone。從輸入對話框返回值,android
我正在爲我的學校開發一個Android項目,我有幾個問題。
我沒有太多的開發android應用程序的經驗。
所以,讓我解釋什麼,我想做的事:
我希望用戶把一些整數,然後當他按下名爲「計算」按鈕,我的應用程序計算公式,我在我的代碼。
我還沒有能夠使它工作的棘手部分是彈出一個輸入對話框(一切正常,直到這裏)和他輸入的數字出現在主要活動中......在主要活動中,我想更換一個按鈕或者一個TextView的文本..
所以這是代碼:
我已經運行到我的手機進行測試,並出現對話框,但如果我點擊確定崩潰。 對不起,但這是我第一次嘗試創建一個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();
}
好吧,我會嘗試它,我讓你知道。 –
線
result.setText(userInput.getText());
導致崩潰的變量 「結果」 爲空。 Android不知道你想改變什麼。添加
result=(TextView) findViewById(R.id.something);
在您的oncreate方法。請注意,您必須在設置contentview後執行此操作。您應該學習如何閱讀您的控制檯進行調試。
快樂學習Android!
的錯誤是在這裏:
result.setText(userInput.getText());
您從userInput的EditText領域得到了文本。但是你不能將文本設置爲edittext。你必須設置一個字符串。所以,你必須從userInput獲取一個字符串。簡單的解決方案是
result.setText(userInput.getText().toString());
你好塔基斯,歡迎來到StackOverflow。爲了更好地幫助我們理解您的問題,請張貼您遇到問題的代碼。 – stevebot
'他的文字在主要活動中出現的數字...在主要活動中,我想要替換按鈕或文本視圖的文字。「因此,您已經獲得了該數字並且已經存在於您的主要活動中。你有所有需要的,那麼問題是什麼? –
問題是,我怎樣才能從輸入對話框的主要活動。 –