不能将这两个函数与片段一起使用

时间:2017-09-13 15:37:42

标签: android android-fragments android-fragmentactivity

我的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();
                }





            }
        });


    }
}

2 个答案:

答案 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);