Ich versuche, einige einfache Berechnungen zu tun, habe ich einen Listener auf meinem Fragment Aber es löst nicht die onClick
Methode und das Protokoll zeigt nichts, Nach einer akzeptierten Antwort hier sollte dies funktionieren, und die meisten Alternativen nicht für mich arbeiten, Was ist die Ursache für dieses Verhalten das ist mein Fragment istButton onClickListener funktioniert nicht in Fragment
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);
}
}
das ist mein Layout:
<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>
EDIT: das Fragment ist ein Teil von 5 fragents in BottomBar
Diese sind in meinem 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;
}
}
wollen, aber Sie onClick nicht in Tag
seine notwendige trotz Zuhörer nennen ?? Entschuldigung, bin ein Anfänger, also welche Methode setze ich onClick Tag in xml –
Haben Sie einen Breakpoint in onClick platziert, um zu überprüfen, dass es nie aufgerufen wird ?. Auch in Bezug auf die anderen Kommentare, müssen Sie nicht hinzufügen in XML, Hinzufügen rein in Code ist ausreichend und nur eine andere Art, es zu tun .. – Redshirt