2014-05-21 82 views
-1

我開始從助手類的新活動與TextView.setText,而遺漏刷新

private class IntentLauncher extends Thread { 
@Override 
    public void run() { 
     try { 
     Intent intent = new Intent(myContext, Class.forName(myContext.getPackageName() + nextActivity)); 
     intent.putExtra("Package", myPackage); 
     myContext.startActivity(intent); 
     } catch(Exception e) { 
     Log.e("DownloadHelper", "DownloadHelper launcher error: " + e.getMessage()); 
     } 
    } 
} 

,然後在新的活動我想改變一個TextView

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_author_main); 
    final TextView aboutAuthor = (TextView) findViewById(R.id.aboutText); 
    Log.d("LibAuthorMain", "before getText(): "+aboutAuthor.getText().toString()); 
    aboutAuthor.setText("test"); 
    Log.d("LibAuthorMain", "after getText(): "+aboutAuthor.getText().toString()); 
} 

的XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Text" 
     android:id="@+id/aboutText" 
     android:textSize="25sp" 
     android:textStyle="bold"/> 

</RelativeLayout> 

運行後,它顯示在logcat(新文本是通過xml預定義值):

before getText(): New Text 
after getText(): test 

但它仍然在屏幕上顯示舊值。怎麼了?

[解決] 我發現了錯誤...對不起,它是我的顯示器前50釐米... :(我在(庫)類的子類的onCreate中留下了一個setContentView,在那裏我想(感謝您的時間!)

+1

沒有錯。你爲什麼覺得有什麼不對? – Blackbelt

+0

可能是你的意思是使用'setText'的'append' insted !.爲什麼你需要一個線程來發起一個活動? – Raghunandan

+0

@blackbelt:爲什麼它不顯示屏幕上的新值?它仍然顯示舊的價值。 – Glueckstiger

回答

0

我認爲,雖然啓動活動的路徑是不正確的,這意味着如果你評估「myContext.getPackageName()+ nextActivity」類沒有解決。 你在myContext.getPackageName()之後加了一個點嗎?如果不是,就把它放在因爲沒有點而變得像「com.android.testactivityname」那樣不能被識別,所以你必須把它放在「com」中。 android.test.activityname「

快速解決方案 - >

「myContext.getPackageName()+」。「+ nextActivity」這應該工作。請檢查包含活動的實際名稱的變量nextActivity。

請隨時問任何問題。