如何在android studio中调用另一个activity方法?

时间:2015-08-19 16:45:03

标签: android android-activity methods

我有两个不同的活动。 如果用户登录,则第一个调用菜单(base),但也有显示用户信息的方法。

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()”方法让我想起其他活动?

1 个答案:

答案 0 :(得分:0)

MainActivity的布局包含显示用户信息的View。如果您在Base,则该活动具有不同的布局,没有任何View用于显示用户信息。您可以创建一个显示用户信息的Dialog,也可以将View添加到显示用户信息的Base,或者您可以重新设置您的应用,以便您拥有另一个Activity显示用户信息,MainActivityBase可以启动Activity以显示用户信息。

在任何情况下,您绝对不能使用Activity关键字来MainActivity new实例化!只有Android可以实例化Activity组件,因为框架在设置基础Context时会这样做。它还跟踪这些组件并管理生命周期回调。