2014-01-28 86 views
0

我想在這樣的活動上顯示一個TextView的消息:「Hello World」的機器人的TextView的setText問題

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_display_message); 

    // Get the message from the intent 
     Intent intent = getIntent(); 

     // Create the text view 
     TextView textView = (TextView) findViewById(R.id.display_message);  

     if(intent.getExtras() != null){ 
      String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 
      textView.setTextSize(40); 
      textView.setText(message);   
     }else{ 
      textView.setTextSize(40); 
      textView.setText(R.string.hello_world); 
     } 

    // Show the Up button in the action bar. 
    setupActionBar(); 
} 

應該顯示的代碼當包含在intent中的額外消息是null,而不是hello world!沒有顯示出來。

enter image description here enter image description here

這是我strings.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="app_name">Action Bar</string> 
    <string name="action_settings">Settings</string> 
    <string name="hello_world">Hello world!</string> 
</resources> 

主要活動,其發送的消息: 「Hello World」 的

public class MainActivity extends ActionBarActivity { 
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; 

@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_activity_actions, menu); 

    return super.onCreateOptionsMenu(menu); 
    //return true; 
} 

public void sendMessage(View view){ 
    Intent intent = new Intent(this, DisplayMessageActivity.class); 
    EditText editText = (EditText) findViewById(R.id.edit_message); 
    String message = editText.getText().toString(); 
    intent.putExtra(EXTRA_MESSAGE, message); 
    startActivity(intent); 
} 

public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle presses on the action bar items 
    switch (item.getItemId()) { 
    case R.id.action_search: 
    // openSearch(); 
     return true; 
    case R.id.action_settings: 
    // openSettings(); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 
} 
+0

我已經添加了負責發送消息的主要活動代碼 – daiyue

+0

intent.getExtras()!= null並不意味着intent.getStringExtra也不爲null – njzk2

回答

2

你應該顯示當意圖中包含的額外消息爲空時。但在你的代碼中,你只是檢查意圖的演員。您可能會傳遞一些其他參數,因此intent.getExtras()將不會返回null。

你應該嘗試的東西沿線

if(intent.getExtras() != null && !Textutils(intent.getStringExtra(MainActivity.EXTRA_MESSAGE))){ 
      String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 
      textView.setTextSize(40); 
      textView.setText(message);   
     }else{ 
      textView.setTextSize(40); 
      textView.setText(R.string.hello_world); 
     } 
+0

我想你的意思是使用'!TextUtils.isEmpty (intent.getStringExtra(MainActivity.EXTRA_MESSAGE))' – daiyue

2

您可以檢查特定的價值,無論是空或它的價值。然後添加您的顯示邏輯如下

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_display_message); 

    // Get the message from the intent 
     Intent intent = getIntent(); 
     String message = null; 

     // Create the text view 
     TextView textView = (TextView) findViewById(R.id.display_message);  

     if(intent != null){ 
      message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 
     } 
     if(message != null && message.length() > 0){ 
      textView.setTextSize(40); 
      textView.setText(message);   
     }else{ 
      textView.setTextSize(40); 
      textView.setText(R.string.hello_world); 
     } 

    // Show the Up button in the action bar. 
    setupActionBar(); 
} 
1

intent.getExtras()不返回空值。所以你可以做的是檢查是否intent.getStringExtra(MainActivity.EXTRA_MESSAGE)返回""並相應地工作。祝你好運!