我的Android代码有问题。
以下方法在使用片段时会出错: 1. getSystemService() 2. getCurrentFocus()
这是图像,所以你们可以知道错误的确切位置: Android Studio Image
任何帮助将不胜感激。 在此先感谢:)
package com.saipriyank.taxdiscount;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class discount_frag extends Fragment {
private static final String TAG = "discount_Frag";
double num1, num2, sum;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.discount_frag,container,false);
final EditText txtnum1 = (EditText)view.findViewById(R.id.txtnum1);
final EditText txtnum2 = (EditText)view.findViewById(R.id.txtnum2);
final Button bt = (Button)view.findViewById(R.id.bt);
final TextView tvAmount = (TextView)view.findViewById(R.id.tvAmount);
final TextView tvTotal = (TextView)view.findViewById(R.id.tvTotal);
return view;
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
try
{
num1 = Double.parseDouble(txtnum1.getText().toString());
num2 = Double.parseDouble(txtnum2.getText().toString());
sum = (num1 * num2) / 100;
tvAmount.setText(Double.toString(sum));
tvTotal.setText(Double.toString(num1 - sum));
}
catch (Exception e) {
Toast.makeText(getActivity(),"The fileds can not be empty.",Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
});
}
}
答案 0 :(得分:1)
尝试在方法之前使用getActivity()
。
getActivity().getSystemService();
getActivity().getCurrentFocus();
答案 1 :(得分:1)
这是正常的,因为您在片段中,这些是Activity实例的方法。只需获取活动实例并使用它调用这些方法。
getActivity().getCurrentFocus();
getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
//or
getContext().getSystemService(Context.INPUT_METHOD_SERVICE);