2014-02-19 69 views
0

我有一個對話框bux,它在選擇textView時打開。該對話框包含一個editText。 我想要做的是能夠在editText中鍵入一個sting,當按下'Done'按鈕時,它將把editText中的字符串存儲到一個變量中,通過原始的textView可以查看它。 根據日食我的源代碼是正確的。但是當我在我的android手機上運行它時,它崩潰了。我知道這是OnClick Listner的原因。Android Java:Diaglog setText&getText問題

下面是我的烴源代碼:

public class MainActivity extends Activity { 
/** Called when the activity is first created. */ 

TextView showPopUpButton;//NEW 
EditText getInput;//NEW 

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

    showPopUpButton = (TextView) findViewById(R.id.buttonShowPopUp);//NEW 
    getInput = (EditText) findViewById(R.id.editText1);//NEW 

    showPopUpButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showPopUp3();    } 
     }); 
} 


private void showPopUp3() { 
    AlertDialog.Builder helpBuilder = new AlertDialog.Builder(this); 
    helpBuilder.setTitle("Enter your string"); 

    LayoutInflater inflater = getLayoutInflater(); 
    View checkboxLayout = inflater.inflate(R.layout.popuplayout, null); 
    helpBuilder.setView(checkboxLayout); 

    helpBuilder.setPositiveButton("Done", new DialogInterface.OnClickListener() { 
     TextView showPopUpButton;//NEW 
     EditText getInput;//NEW 
     public void onClick(DialogInterface dialog, int which) { 
      // THIS IS SUPPOSED TO STORE THE VALUE OF THE EDIT-TEXT AND OUTPUT IT IN THE TEXTVIEW 
       showPopUpButton = (TextView) findViewById(R.id.buttonShowPopUp);//NEW 
      showPopUpButton.setText(getInput.getText());//NEW** 
      } 
     }); 

    AlertDialog helpDialog = helpBuilder.create(); 
    helpDialog.show(); 
} 

}

謝謝你們,我知道這種解決方案可能很容易,我只是失去了一些東西小。 謝謝

+0

onClickListener還在setText和getText過程完成後關閉diaglog。 – user3247335

+0

是'showPopUpButton'真的是一個'TextView'還是它是一個'Button'? – ElefantPhace

+0

u不初始化本地變量EditText getInput ..其中你做getInput =(EditText)findViewById(R.id.edittextid); ??如果它已經在全球你不需要再申報。 – Neha

回答

1

我認爲你的TextView是在主佈局中,EditText在popuplayout.xml中。 如果是這樣的話,請嘗試下面的代碼。你不能直接得到EditText的引用,你必須從它的佈局中找到它(checkboxlayout)。

private void showPopUp3() { 
AlertDialog.Builder helpBuilder = new AlertDialog.Builder(this); 
helpBuilder.setTitle("Enter your string"); 

LayoutInflater inflater = getLayoutInflater(); 
View checkboxLayout =inflater.inflate(R.layout.popuplayout, null); 
getInput = (EditText) checkboxLayout.findViewById(R.id.editText1); 
getInput.setText(YOUR_STRING); 
helpBuilder.setView(checkboxLayout); 

helpBuilder.setPositiveButton("Done", new DialogInterface.OnClickListener() { 


    public void onClick(DialogInterface dialog, int which) { 
     // THIS IS SUPPOSED TO STORE THE VALUE OF THE EDIT-TEXT AND OUTPUT IT IN THE TEXTVIEW 

     showPopUpButton.setText(getInput.getText());//NEW** 
     } 
    }); 

AlertDialog helpDialog = helpBuilder.create(); 
helpDialog.show(); 
} 
+0

真棒!非常感謝,這對我很有幫助。我只是有一個簡單的問題。當我現在按完成按鈕它現在顯示字符串。但是,當我再次打開對話框時,我輸入的字符串清除了,是否有一種方法可以讓我在editText中輸入字符串,以留在那裏? – user3247335

+0

看看編輯答案。 –

+0

你的答案是完美的。 +1上。 –

0

這應該很好。如果沒有,你需要查看你的logcat併發布它在崩潰時說的內容。

helpBuilder.setPositiveButton("Done", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
      showPopUpButton.setText(getInput.getText()); 
     } 
    }); 

由於您已經定義都showPopUpBoxgetInput和你也已經找到他們倆用findViewById那麼你不需要再做了。

+0

嗨,我apprciate你的意見,但它沒有奏效。以上答案是正確的。謝謝 – user3247335

+0

這就是我回答的完全一樣的東西! – ElefantPhace

+0

getInput =(EditText)checkboxLayout.findViewById(R.id.editText1);必須在不同的xml佈局上聲明它。 – user3247335