我想让“已应用”吐司在用户多次单击按钮时出现。现在发生的是,当用户第一次单击按钮时,仍显示“已应用”的吐司。我不希望这种情况发生。我希望仅当用户单击一次它时显示它。我不确定该怎么做。我尝试了以下操作,但是它没有按我的预期工作。如果有人指出我正确的方向,我将不胜感激。
package com.example.oddsynew;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import com.google.android.material.navigation.NavigationView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
public class JobInfo extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
TextView jobName, jobCharge, jobLocation, jobDate, jobTime, jobDesc, jobTasks, addPref, recruiterName;
ImageView profPic;
String jobname, jobloc, jobcharge, profpic, startdate, enddate, starttime, endtime, jobdesc, jobtasks, addpref, recruitername, userID, jobID;
ImageButton menuIcon;
Button requestForHireBtn;
DatabaseReference rootRef, appliedJobsRef, jobNameRef;
FirebaseAuth mAuth;
FirebaseUser u;
DrawerLayout drawer;
NavigationView navigationView;
Query query;
Boolean appliedFirstTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_job_info);
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
menuIcon = (ImageButton) findViewById(R.id.menuIcon);
requestForHireBtn = (Button) findViewById(R.id.requestedBtn);
navigationView = (NavigationView) findViewById(R.id.hamburger_menu);
navigationView.setNavigationItemSelectedListener(this);
navigationView.setCheckedItem(R.id.nav_home);
menuIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
drawer.openDrawer(GravityCompat.START);
}
});
jobName = (TextView) findViewById(R.id.jobName_info);
jobCharge = (TextView) findViewById(R.id.jobCharge_info);
jobLocation = (TextView) findViewById(R.id.jobLocation_info);
profPic = (ImageView) findViewById(R.id.prof_pic_info);
jobDate = (TextView) findViewById(R.id.jobDate_info);
jobTime = (TextView) findViewById(R.id.jobTime_info);
jobDesc = (TextView) findViewById(R.id.jobDesc);
jobTasks = (TextView) findViewById(R.id.jobTasks);
addPref = (TextView) findViewById(R.id.additionalPref);
recruiterName = (TextView) findViewById(R.id.recruiterName_info);
jobname = getIntent().getStringExtra("jobName");
jobloc = getIntent().getStringExtra("jobLocation");
jobcharge = getIntent().getStringExtra("jobCharge");
profpic = getIntent().getStringExtra("profPic");
startdate = getIntent().getStringExtra("startDate");
enddate = getIntent().getStringExtra("endDate");
starttime = getIntent().getStringExtra("startTime");
endtime = getIntent().getStringExtra("endTime");
jobdesc = getIntent().getStringExtra("jobDesc");
jobtasks = getIntent().getStringExtra("jobTasks");
addpref = getIntent().getStringExtra("addPref");
recruitername = getIntent().getStringExtra("recruiterName");
jobID = getIntent().getStringExtra("jobID");
jobName.setText(jobname);
jobCharge.setText(jobcharge);
jobLocation.setText(jobloc);
jobDate.setText(startdate + " - " + enddate);
jobTime.setText(starttime + " - " + endtime);
jobDesc.setText(jobdesc);
jobTasks.setText(jobtasks);
addPref.setText(addpref);
recruiterName.setText(recruitername);
Picasso.get().load(profpic).into(profPic);
appliedFirstTime = false;
requestForHireBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAuth = FirebaseAuth.getInstance();
u = mAuth.getCurrentUser();
userID = u.getUid();
rootRef = FirebaseDatabase.getInstance().getReference();
appliedJobsRef = rootRef.child("Users").child(userID).child("Applied Jobs").push();
jobNameRef = rootRef.child("Users").child(userID).child("Applied Jobs");
jobNameRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
query = jobNameRef.orderByChild("jobID").equalTo(jobID);
query.addValueEventListener(new ValueEventListener() { // I need help in this section
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (appliedFirstTime = true) {
if (dataSnapshot.exists()) {
Toast.makeText(JobInfo.this, "Already applied", Toast.LENGTH_SHORT).show();
}
} else {
appliedJobsRef.child("jobID").setValue(jobID);
appliedJobsRef.child("job_name").setValue(jobname);
appliedJobsRef.child("job_location").setValue(jobloc);
appliedJobsRef.child("recruiter_name").setValue(recruitername);
appliedJobsRef.child("job_charge").setValue(jobcharge);
appliedJobsRef.child("profile_pic").setValue(profpic);
appliedJobsRef.child("start_date").setValue(startdate);
appliedJobsRef.child("end_date").setValue(enddate);
appliedJobsRef.child("start_time").setValue(starttime);
appliedJobsRef.child("end_time").setValue(endtime);
appliedJobsRef.child("job_desc").setValue(jobdesc);
appliedJobsRef.child("job_tasks").setValue(jobtasks);
appliedJobsRef.child("add_pref").setValue(addpref);
requestForHireBtn.setText("Request Sent!");
appliedFirstTime = true;
requestForHireBtn.setEnabled(false);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(JobInfo.this, "Error", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(JobInfo.this, "Error", Toast.LENGTH_SHORT).show();
}
});
}
});
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_home:
Intent intent = new Intent(JobInfo.this, Home.class);
startActivity(intent);
break;
case R.id.nav_gigs:
Intent intent2 = new Intent(JobInfo.this, MyGigs.class);
startActivity(intent2);
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
基本上做到这一点非常简单,您可以提出自己的实现,但是还有另一种先进的方法。让我们一起经历它们。
使用您自己的实现。使用boolean
变量跟踪点击,并向用户显示适当的消息。
boolean isRequestForHireBtnPressed = false;
requestForHireBtn.setOnClickListener(new View.OnClickListener() {
if(isRequestForHireBtnPressed){
// Show relevant toast to user
}else{
// Handle your use-case on user click and set isRequestForHireBtnPressed
isRequestForHireBtnPressed = true;
}
});
这是处理此问题的最简单方法。使用RxViews可以实现另一种高级方法。有关更多信息,请参见RxViews的文档。希望这会对您有所帮助,并朝正确的方向发展。祝你好运!