2015-08-19 115 views
1

我有兩個不同的活動。 如果用戶登錄,第一個調用菜單(基礎),但也有用於顯示用戶信息的方法。如何在android studio中調用另一個activity方法?

public class MainActivity extends ActionBarActivity implements View.OnClickListener { 

    UserLocalStore userLocalStore; 
    EditText etName, etAge, etUsername; 
    Button bLogout; 

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

     etUsername = (EditText) findViewById(R.id.etUsername); 
     etName = (EditText) findViewById(R.id.etName); 
     etAge = (EditText) findViewById(R.id.etAge); 
     bLogout = (Button) findViewById(R.id.bLogout); 

     bLogout.setOnClickListener(this); 

     userLocalStore = new UserLocalStore(this); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()){ 
      case R.id.bLogout: 
       userLocalStore.clearUserData(); 
       userLocalStore.setUserLoggedIn(false); 
       Intent loginIntent = new Intent(this, Login.class); 
       startActivity(loginIntent); 
       break; 
     } 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     if (authenticate() == true) { 
      startActivity(new Intent(this, Base.class)); 
     } 
    } 

    private boolean authenticate() { 
     if (userLocalStore.getLoggedInUser() == null) { 
      Intent intent = new Intent(this, Login.class); 
      startActivity(intent); 
      return false; 
     } 
     return true; 
    } 

    public void displayUserDetails() { 
     User user = userLocalStore.getLoggedInUser(); 
     etUsername.setText(user.username); 
     etName.setText(user.name); 
     etAge.setText(user.age + ""); 
    } 
} 

第二個活動是菜單;此活動有一個名爲「bUtente」的按鈕,點擊時必須顯示用戶信息。

public class Base extends Activity implements View.OnClickListener { 
    Button bDiario; 
    Button bUtente; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_base); 
     bDiario = (Button) findViewById(R.id.bDiario); 
     bDiario.setOnClickListener(this); 
     bUtente = (Button) findViewById(R.id.bUtente); 
     bUtente.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()){ 
      case R.id.bDiario: 
       startActivity(new Intent(this, Diary.class)); 

      case R.id.bUtente: 
       MainActivity prova = new MainActivity(); 
       prova.displayUserDetails(); 
     } 
    } 
} 

我如何能做到這一點,當我點擊按鈕「bUtente」通過執行法「displayUserDetails()」讓我想起了其他的活動?

+0

您可以將信息傳遞給第二個活動並在那裏使用它或創建一個可以訪問並顯示信息的Utility類。 – Raghunandan

回答

0

MainActivity有一個包含顯示用戶信息的View的佈局。如果您在Base中,則該活動具有不同的佈局,不具有用於顯示用戶信息的任何View。您可以創建一個Dialog顯示用戶信息,或者您可以添加額外的ViewBase以顯示用戶信息,或者您可以重新構建您的應用程序,以便您擁有另一個顯示用戶信息的Activity,並且MainActivityBase都可以開始Activity來顯示用戶信息。

在任何情況下,你絕對肯定不能使用new關鍵字實例化一個ActivityMainActivity!只有Android可以實例化Activity組件,因爲當它這樣做時,框架設置底層Context。它還跟蹤這些組件並管理生命週期回調。

+0

謝謝,我想我會重新構建我的應用程序 – Albenzo

相關問題