2013-04-18 80 views
0

我有一個登錄按鈕,當按下時將用戶發送到另一個活動,並將在TextView中發佈用戶名。那部分工作正常。麻煩的是,當我嘗試將第二個活動TextView中的用戶名傳遞給它沒有顯示的第三個活動TextView時。 android:提示顯示爲文本,所以我知道xml很好。我已經嘗試過在本網站上可以找到的各種「putExtra」意圖。我想我錯過了什麼......幫助。我完全新的到Android因此在新手:)如何正確傳遞EditText(在第二個活動中創建TextView的第一個活動中)作爲TextView傳遞給第三個活動?

活動2

public class DashboardActivity extends Activity { 
UserFunctions userFunctions; 
Button btnLogout; 
Button scanButton; 
Button userinfo; 
Button help; 
Button receipt; 
TextView showmsg; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    /** 
    * Dashboard Screen for the application 
    * */   
    // Check login status in database 
    userFunctions = new UserFunctions(); 
    if(userFunctions.isUserLoggedIn(getApplicationContext())){ 
     setContentView(R.layout.dashboard); 



     scanButton = (Button) findViewById(R.id.scanButton); 
     btnLogout = (Button) findViewById(R.id.btnLogout); 
     userinfo = (Button) findViewById(R.id.userinfo); 
     help = (Button) findViewById(R.id.help); 
     receipt = (Button)findViewById(R.id.receipt); 
     showmsg = (TextView)findViewById(R.id.showmsg); 

     Intent in = getIntent(); 
     if (in.getCharSequenceExtra("usr") != null) { 
      final TextView setmsg = (TextView)findViewById(R.id.showmsg); 
      setmsg.setText("User: "+in.getCharSequenceExtra("usr"));     
     } 




     btnLogout.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       userFunctions.logoutUser(getApplicationContext()); 
       Intent login = new Intent(getApplicationContext(), LoginActivity.class); 
       login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(login); 
       // Closing dashboard screen 
       finish(); 
      } 
     }); 


     // Link to CC 
     scanButton.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       Intent i = new Intent(getApplicationContext(), 
         MyScanActivity.class); 
       startActivity(i); 
       finish(); 
      } 
     }); 

     // Create a customer receipt 
     receipt.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       Intent intent = new Intent(DashboardActivity.this, ReceiptActivity.class)); 
       intent.putExtra("TextView",showmsg); 
       startActivity(intent); 
       finish(); 
      } 
     }); 

     // Link to User info 
     userinfo.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       Intent i = new Intent(getApplicationContext(), 
         UserInfoActivity.class); 
       startActivity(i); 
       finish(); 
      } 
     }); 

     // Link to Help info 
     help.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       Intent i = new Intent(getApplicationContext(), 
         HelpActivity.class); 
       startActivity(i); 
       finish(); 
      } 
     }); 



    }else{ 
     // user is not logged in show login screen 
     Intent login = new Intent(getApplicationContext(), LoginActivity.class); 
     login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(login); 
     // Closing dashboard screen 
     finish(); 
    } 




} 

}

+0

爲什麼你不通過字符串? –

回答

1

@SmulianJulian:

有一個錯誤。您將組件TextView傳遞給下一個意圖,而您應該只傳遞它的文本。

你正在做的:

intent.putExtra("TextView",showmsg); 

,但你應該做這樣

Bundle extras = myIntent.getExtras(); 
extras .putString("TextView",showmsg.getText().toString()); 

,並在第三次活動,你應該得到這樣的值:

bundle = getIntent().getExtras(); 
bundle.getString("TextView"); 

,然後將這個值設置爲你的textview。

TextView yourTV = ((TextView) findViewById(R.id.your_textview_id)); 
yourTV.setText(bundle.getString("TextView")); 

希望它有幫助。

1

登錄後笑了,儘量節省用戶名在SharedPreferences,然後你就可以得到它的價值無論何時何地你想:

保存用戶名:

SharedPreferences prefs = getSharedPreferences("prefs", Context.MODE_PRIVATE); 
prefs.edit().putString("username", username).commit(); 

從yourActivity檢索用戶名的值:

SharedPreferences prefs = getSharedPreferences("prefs", Context.MODE_PRIVATE); 
String username = prefs.getString("username"); 
yourTextView.setText(username); 
相關問題