我正在创建一个应用程序,但在此我需要输入一个用户名一切正常,它不会给我任何错误,但在"注册用户名"的活动中很好但是在以下活动中保存EditText的文本并没有到达应该的位置,它变成空白我不知道发生了什么
这是用于注册用户名的类
public class UsernameRegiserActivity extends AppCompatActivity {
private Button buttonRegisterAnonymous, buttonRegisterAUsername;
private EditText getAUsernameToRegister;
private User mUser;
private Post mPost;
private PostMemes mPostMemes;
private PostCreativo mPostCreativo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_username_regiser);
init();
}
private void init() {
buttonRegisterAnonymous = (Button) findViewById(R.id.buttonRegisterAsAnonymous);
buttonRegisterAUsername = (Button) findViewById(R.id.buttonRegister_aUsername);
getAUsernameToRegister = (EditText) findViewById(R.id.editText_registerUsername);
//==============================================================================
mUser = new User();
buttonRegisterAUsername.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String nombre = getAUsernameToRegister.getText().toString();
mUser.setUsername(FirebaseUtils.getCurrentUser().getEmail().replaceAll(FirebaseUtils.getCurrentUser().getEmail(), nombre));
mUser.setUser(FirebaseUtils.getCurrentUser().getEmail().replaceAll(FirebaseUtils.getCurrentUser().getEmail(), nombre));
startActivity(new Intent(UsernameRegiserActivity.this, LogInActivity.class));
}
});
}
在此片段中接收已放置在editText中的名称
相关代码:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
mRootView = inflater.inflate(R.layout.fragment_post, container, false);
FloatingActionButton fab = (FloatingActionButton)
mRootView.findViewById(R.id.fabM);
mUser = new User();
return mRootView;
}
PopulateViewHolder...
viewHolder.postOwnerUsernameTextView.setText(mUser.getUser());
if(viewHolder.postOwnerUsernameTextView == null){
viewHolder.postOwnerUsernameTextView.setText("Anonymous");
}
模型类:
public class User implements Serializable{
private String user;
private String email;
private String Uid;
private String username;
public User() {
}
public User(String user) {
this.user = user;
}
public User(String user, String email, String uid, String username) {
this.user = user;
this.email = email;
Uid = uid;
this.username = username;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUid() {
return Uid;
}
public void setUid(String uid) {
Uid = uid;
}
}
和我使用的工具
public static DatabaseReference getUserRef(String email) {
return FirebaseDatabase.getInstance()
.getReference(Constants.USERS_KEYS)
.child(email);
}
public static FirebaseUser getCurrentUser() {
return FirebaseAuth.getInstance().getCurrentUser();
}
使用此方法创建用户
auth.createUserWithEmailAndPassword(email, password)
对不起我的拼写,感谢您的关注。
答案 0 :(得分:0)
在您的另一个活动中,您再次创建一个新的模型类。这就是你的editTank消失的原因。让我们试试这个解决方案来在2级之间传输数据
使新的接口类调用TransferData
public interface TransferData{
void onTransferDataListener(String text);
}
在您的活动中,让我们初始TransferData
public TransferData mTransferDataListener;
public void setTransferData(TransferData listener) {
this.mTransferDataListener= listener;
}
//whenever your make a new String from EditText, put it in this function
mTransferDataListener.onTransferDataListener(yourText);
最后,在您的课程中,您想要获取数据,您只需要实现TransferData
课程,不要忘记添加此功能以初始化接收器
//I call this function from my activity
mActivity.setTransferData(this);
在实现TransferData
类之后,android studio会自动添加此覆盖以接收数据
@Override
public void onTransferDataListener(String text) {
//do what ever you want with your String text here
}
答案 1 :(得分:0)
假设我在我的活动中,这是一个将字符串发送到片段的对话框
在那个对话中可以做到这一点吗?
UsernameRegisterClass:
Public class UsernameRegister
TransferData mTransferData;
EditText mEditText;
Public void setmTransferData (TransferData lisenter) { This.mTransferData = lisenter;}
OnCreate (
MTransferData.onTransferDataLisenter (mEditText.getText.toString ());
对话类:
DialogClass.setTransferData (this); @Override Public void onTransferDataListener (String text) { MPost.setUsermae (text) // I think I get the text here}
Private void sendPost () {
MPost.getUsername ();
// is the code okay?
}