gpt4 book ai didi

java - 如何从不同的 Activity 类设置 onclicklistener?

转载 作者:行者123 更新时间:2023-11-30 10:21:16 25 4
gpt4 key购买 nike

如何设置属于不同 Activity 的按钮的 onClickListener?我正在使用 sharedPreferences,我想在不同的 Activity 上创建一个注销按钮。在启动时打开的 Activity 不应该有注销按钮。这就是为什么我没有在配置文件 Activity 中包含所有 sharedPreferences 代码。

HomeActivity 类:

//UserSessionManager class
UserSessionManager session;

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

//start new activity when fab is clicked
final FloatingActionButton fab = (FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), Profile.class);
startActivity(intent);
}
});

session = new UserSessionManager(getApplicationContext());

//check if user is logged in
//if the user is not logged in
if (session.checkLogin()) {
finish();
}

HashMap<String, String> user = session.getUserDetails();

//get variables
String username = user.get(UserSessionManager.KEY_USERNAME);
String age = user.get(UserSessionManager.KEY_AGE);
String firstName = user.get(UserSessionManager.KEY_FIRSTNAME);


EditText etUsername = (EditText) findViewById(R.id.etEmail);
EditText etAge = (EditText) findViewById(R.id.etAge);

我希望注销按钮位于个人资料 Activity 中。

这是配置文件类:

Button bLogOut;
UserSessionManager sessionManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
}
public void sendSession(final UserSessionManager userSession) {
bLogOut = (Button)findViewById(R.id.bLogOut);

bLogOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
userSession.logoutUser();
}
});
}

在做了很多不同的事情之后,我创建了发送 session 方法,它从 HomeActivity 类接收 session 变量作为参数。我仍然遇到 nullpointerexception

最佳答案

像这样在 HomeActivity.class 中创建一个接收器,

public BroadcastReceiver logoutReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
/Do what ever you want.
}
};

现在在您的 HomeActvity.class 中注册和取消注册您的接收器

    @Override
protected void onStart() {
super.onStart();
IntentFilter intentFilter = new IntentFilter("com.saim.logoutReceiver");
registerReceiver(logoutReceiver, intentFilter);

}

@Override
protected void onDestroy() {
try {
super.onDestroy();
unregisterReceiver(logoutReceiver);
} catch (IllegalArgumentException i) {

}
}

现在只需从这样的任何 Activity 中发送您的广播

sendBroadcast(new Intent("com.saim.logoutReceiver"));

关于java - 如何从不同的 Activity 类设置 onclicklistener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47950937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com