Java 一个按钮用于两种不同的操作

Java 一个按钮用于两种不同的操作,java,android,Java,Android,我在dialogFragment中有“发送”按钮,onClick事件在键值下将新数据推送到firebase 我希望这个按钮也像一个“更新”按钮时,用户点击特定的按钮。数据将在firebase中以与以前相同的键值进行更新 这是发送按钮onClick方法: send_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {

我在dialogFragment中有“发送”按钮,onClick事件在键值下将新数据推送到firebase

我希望这个按钮也像一个“更新”按钮时,用户点击特定的按钮。数据将在firebase中以与以前相同的键值进行更新

这是发送按钮onClick方法:

send_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                    //some code .....//

                    DatabaseReference newPost = mDatabase.push();
                    str_key = newPost.getKey();
                    trempData = new TrempData(str_key, str_uid, str_name, str_phone, str_from, str_to, str_date, str_time, str_extra, str_timestamp);
                    newPost.setValue(trempData);
                   Toast.makeText(getActivity(), "Tremp Added", Toast.LENGTH_SHORT).show();
                    dismiss();
                }


        });
有什么建议吗?

这是一个例子:

private final int BUTTON_UPDATE = 1;
private final int BUTTON_SEND = 2;
private int buttonStatus = 0;

send_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          switch(buttonStatus)
          {
            case BUTTON_UPDATE: { // your update code here}
            case BUTTON_SEND : { // your send code here
        }
按钮状态将控制按钮的操作

  • 在SharedReferences中放入布尔值,并在
    用户将数据发送到firebase更新布尔值为true

  • 在onClick中,使用if-else和检查值是否为真 相应地执行代码


  • 比实现更重要的是您认为可以实现的方式。因此,在这些情况下,基本方法是使用布尔变量

    为什么??因为它可以用来指示按钮是否处于特定状态。 所以,你可以这样做

    boolean b=false;
    //set your button in the initial state you want(submit in your case)
     //In onClick() method
    if(!b){         //button in submit state
    b=true;        
    //do submit stuff
    send_btn.setText("update");
    }
    else{         //button in update state
    b=false;
    //do update stuff
    send_btn.setText("submit");
    }
    

    在这种情况下,b的真值表示按钮处于“更新”状态。

    您可以使用视图的标记进行此操作,并根据需要更新状态

      Button button = findViewById(R.id.btn);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (button.getTag().equals("send")) {
                        // push the value to firebase
    
                        // set the tag to update and the text
                        button.setTag("update");
                        button.setText("update");
                    }else if (button.getTag().equals("update")){
                        // update the value in firebase
                    }
                }
            });
    
    xml

    
    
    当他打开对话框时,开始的状态是什么我不确定我是否重新启动了你的问题。。开始状态是当用户单击发送btn新数据时,在按下您想要的按钮后,将其推送到Firebase升级按钮的状态我想在单击特定btn后更改状态。我将编辑问题以使其清晰。好的,我明白了,我将回答,我希望只有在单击位于listview(另一活动)中的特定按钮时,才将其更改为“更新”。但当我尝试更改标签时,应用程序会关闭答案中的此代码,如果在同一个活动中有,如果在另一个活动中,我认为您应该使用prefrence来存储值
    <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="send"
            android:text="send" />