将变量从ChildFragment传递到Android动态

时间:2017-06-13 04:07:00

标签: android

我在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();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你可以在LoginActivity中添加一个名为setPassword(String password)的方法,然后在settingsFragment的onclick监听器中调用该方法。 或更好:您可以向SettingFragment添加观察者。