我试图做一些简单的计算,我在我的片段上设置了一个监听器但是它没有触发onClick
方法并且日志没有显示任何内容。根据这里接受的答案,这应该有效,并且大多数替代方案对我没有用,这种行为的原因是什么?这是我的片段
public class AttendanceFragment extends Fragment implements View.OnClickListener {
EditText ET_days,ET_week;
TextView TV_attendance;
Button btn;
static int attendance;
public static final String TAG = "Checking";
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.attendance,container,false);
ET_days= (EditText) v.findViewById(R.id.et_days);
ET_week= (EditText)v.findViewById(R.id.et_week);
TV_attendance=(TextView) v.findViewById(R.id.tv_attendance);
btn=(Button)v.findViewById(R.id.btn_attendance);
btn.setOnClickListener(this);
return v;
}
@Override
public void onClick(View view) {
int days =Integer.parseInt(ET_days.getText().toString());
int week= Integer.parseInt(ET_week.getText().toString());
int d = days * 5;
int w = week * 75;
attendance= (d/w) * 100;
String att= String.valueOf(attendance);
Log.d("ATtendance",att);
TV_attendance.setText("Your Current Attendance is:"+att);
}
}
这是我的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="10dp"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv_days"
android:text="Enter The number of days you have missed so Far"
android:textSize="20sp"
android:layout_marginTop="20dp"
android:layout_gravity="center"
/>
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:hint="days missed"
android:id="@+id/et_days"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv_week"
android:text="Enter The Current school week Number "
android:textSize="20sp"
android:layout_marginTop="20dp"
/>
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:hint="week number"
android:id="@+id/et_week"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Your Current Attendance is: 85%"
android:layout_marginTop="40dp"
android:textSize="30sp"
android:id="@+id/tv_attendance"
/>
<Button
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="250dp"
android:layout_height="60dp"
android:id="@+id/btn_attendance"
android:layout_marginTop="80dp"
android:layout_gravity="center"
android:text="Check Attendance"
android:textSize="18sp"
android:background="@drawable/button_selector"
android:textColor="@color/white"
/>
</LinearLayout>
编辑:
该片段是BottomBar
中5个fragent的一部分,这些是我的MainActivity
public class MainActivity extends AppCompatActivity {
private int STORAGE_PERMISSION_CODE = 7;
BottomBar mBottomBar;
public static int m= 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBottomBar = BottomBar.attach(this,savedInstanceState);
mBottomBar.setItemsFromMenu(R.menu.menu_main,new OnMenuTabClickListener()
{
public void onMenuTabSelected(@IdRes int i) {
if(i==R.id.Bottombaritemone)
{
NewsFRagment f = new NewsFRagment();
getSupportFragmentManager().beginTransaction().replace(R.id.main_container,f).commit();
}
else if(i==R.id.Bottombaritemtwo)
{
AttendanceFragment f =new AttendanceFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.main_container,f).commit();
}
else if(i==R.id.Bottombaritemthree)
{
PhoneFragment f =new PhoneFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.main_container,f).commit();
}
else if(i==R.id.Bottombaritemfour)
{
UploadFragment f =new UploadFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.main_container,f).commit();
if (m == 0) {
if (isReadStorageAllowed()) {
//If permission is already having then showing the toast
//Existing the method with return
return;
}
//If the app has not the permission then asking for the permission
requestStoragePermission();
}
}
else if(i==R.id.Bottombaritemfive)
{
FavoritesFragment f =new FavoritesFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.main_container,f).commit();
}
}
@Override
public void onMenuTabReSelected(@IdRes int i) {
}
});
mBottomBar.mapColorForTab(0, "#F44336");
mBottomBar.mapColorForTab(1,"#9C27B0");
mBottomBar.mapColorForTab(2,"#03A9F4");
mBottomBar.mapColorForTab(3,"#795548");
mBottomBar.mapColorForTab(4,"#FF6F00");
BottomBarBadge unread;
unread = mBottomBar.makeBadgeForTabAt(3,"#FF0000",13);
unread.show();
}
//We are calling this method to check the permission status
private boolean isReadStorageAllowed() {
//Getting the permission status
int result = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
//If permission is granted returning true
if (result == PackageManager.PERMISSION_GRANTED)
return true;
//If permission is not granted returning false
return false;
}
//Requesting permission
private void requestStoragePermission(){
if (ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.READ_EXTERNAL_STORAGE)){
//If the user has denied the permission previously your code will come to this block
//Here you can explain why you need this permission
//Explain here why you need this permission
Toast.makeText(MainActivity.this,"Need permission to read fles for upload",Toast.LENGTH_LONG).show();
}
//And finally ask for the permission
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},STORAGE_PERMISSION_CODE);
Log.d("Permission Requested","Permission requested");
}
//This method will be called when the user will tap on allow or deny
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//Checking the request code of our request
if(requestCode == STORAGE_PERMISSION_CODE){
//If permission is granted
if(grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
//Displaying a toast
Toast.makeText(this,"Permission granted now you can read the storage",Toast.LENGTH_LONG).show();
}else{
//Displaying another toast if permission is not granted
Toast.makeText(this,"Oops you just denied the permission",Toast.LENGTH_LONG).show();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
}
答案 0 :(得分:0)
试试这个
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.R.id.btn_attendance:
int days =Integer.parseInt(ET_days.getText().toString());
int week= Integer.parseInt(ET_week.getText().toString());
int d = days * 5;
int w = week * 75;
attendance= (d/w) * 100;
String att= String.valueOf(attendance);
Log.d("ATtendance",att);
TV_attendance.setText("Your Current Attendance is:"+att);
break;
}
}
现在它可以按你的需要工作