我在Android中有这个留言板应用程序。应用程序的结构有点像这样。 LoginActivity(使用意图放置额外(密码)) - > MainActivity(获取Extra,FragmentManager) - > TabFragment - > (ChildFragment)Fragment1,Fragment2,SettingFragment等。
我在SettingFragment中有Edittext来更改用于登录LoginActivity的密码。通过使用getText,我获得了edittext的值并将其存储在变量中。
问题是,,,,我从SettingFragment获取的变量在LoginActivity中返回null。有没有办法获得变量?提前致谢
以下是我的LoginActivity代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_layout);
admin = (Button) findViewById(R.id.btn_admin);
user = (TextView) findViewById(R.id.btn_user);
txtAdmin = (EditText) findViewById(R.id.input_pin);
admin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
login();
}
});
user.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(LoginActivity.this, MainActivity.class);
i.putExtra("key", "user");
startActivity(i);
}
});
}
public void login(){
if (txtAdmin.getText().toString().equals(SettingFragment.getPin)) {
Intent i = new Intent(LoginActivity.this, MainActivity.class);
i.putExtra("key", SettingFragment.getPin);
startActivity(i);
} else {
Toast.makeText(getApplicationContext(), "Wrong PIN", Toast.LENGTH_SHORT).show();
}
}
SettingFragment
String setPin;
public static String getPin;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.setting_layout, container, false);
setPin = (EditText) v.findViewById(R.id.pin);
save = (Button) v.findViewById(R.id.save);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getPin = setPin.getText().toString();
}
}
}
答案 0 :(得分:0)
你可以在LoginActivity中添加一个名为setPassword(String password)的方法,然后在settingsFragment的onclick监听器中调用该方法。 或更好:您可以向SettingFragment添加观察者。