簡體   English   中英

setText()不起作用

[英]setText() is not working

我的xml中有一個EditText拋出沒有異常,但是我沒有顯示我在EditText設置的文本"kailash" 它顯示我空的EditText 在調試中我表明編譯器正在執行tx1.setText("kailash"); 但不知道這不起作用。我有一個簡單的MainActivity ,因為有一個搜索按鈕和onclick search按鈕我試圖顯示一個對話框。請幫助我。 這是我的代碼: -

Dialog dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.search_dialog);
RelativeLayout layout = (RelativeLayout) MainActivity.this.getLayoutInflater()
                                      .inflate(R.layout.search_dialog, null);
EditText txt1 = (EditText) layout.findViewById(R.id.txt1);
txt1.setText("kailash");
dialog.show();

這是我的xml代碼:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"  >

 <EditText
        android:id="@+id/txt1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:drawable/editbox_background"
    android:textSize="16dp" />
</RelativeLayout>
final EditText txt1 = (EditText) findViewById(R.id.txt1);
txt1.setText("kailash");

在你的活動類上調用findViewById ,而不是你剛剛膨脹的RelativeLayout(無論如何恕我直言)

你無法改變final - 這是一個常數。 在沒有最終修飾符的情況下定義它,設置文本,然后將其他實例定義為final

回到原帖。

Kailash,看起來代碼首先從XML布局設置對話框的內容視圖:dialog.setContentView(R.layout.search_dialog);

...然后通過將其膨脹到另一個對象布局來創建相同資源的另一個實例。

然后修改后者中的文本視圖,但Android顯示前一個視圖。

這個怎么樣?

EditText txt1 =(EditText) 對話框 .findViewById(R.id.txt1);

好吧,雖然成功,但這次換線看起來很神奇。 可能只是一個特定的實現巧合 - 易於回歸。 它可能取決於inflater內部,布局對象被緩存等等。您仍然會膨脹到可能與內容視圖不同的對象實例。 如果它在當前實現中恰好相同,是否有任何保證它始終是相同的?

OTOH, dialog .findViewById似乎更健壯:你只需要在對話框中獲得對組件的引用 - 就像你對Activity一樣。

我錯過了什么嗎?

像這樣設置文本

View vv;        
    LayoutInflater  inflater  =  (LayoutInflater) YourClassName.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);     
    vv = inflater.inflate(R.layout.rowrelative, null);      
    EditText  edt =(EditText) vv.findViewById(R.id.editText1);
    edt.setText("Ankit");       
    this.addContentView(vv, new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));

在這里,您需要更改您的類名稱和Rowxml文件名

實際上解決方案很簡單,我把這個代碼:

dialog.setContentView(R.layout.search_dialog);
RelativeLayout layout = (RelativeLayout) MainActivity.this.getLayoutInflater()
                                  .inflate(R.layout.search_dialog, null);

而不是這段代碼:

 RelativeLayout layout = (RelativeLayout) MainActivity.this.getLayoutInflater()
                                  .inflate(R.layout.search_dialog, null);
 dialog.setContentView(R.layout.search_dialog);

因為activity在其setcontentView()方法中有另一個布局,所以它不能識別另一個布局,因此你應首先通過inflater加載布局並將其放在對話框的setContentView方法中以使其工作。 希望它能幫到某個人。 並感謝你的支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM