使用editText发送文本在TextView

时间:2017-04-12 20:33:52

标签: android firebase firebase-realtime-database firebase-authentication

我正在创建一个应用程序,但在此我需要输入一个用户名一切正常,它不会给我任何错误,但在"注册用户名"的活动中很好但是在以下活动中保存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)

对不起我的拼写,感谢您的关注。

2 个答案:

答案 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?
  }