Search code examples
androidstringgetstring

How to pass Context into public class with public static String method


I have a public class with one public static String method. I have to getString() and I know that before that I have to extract String ressource and pass Context and I dont know how to pass it .

Another class uses public static String method

Code example:

public class StringUtil {

    public static String sumUp(int nr1, int nr2) {
        int sum = nr1 + nr2;
        String result;

        //all what is in ""  
        result =.getString(R.string.result) + sum;
        return result;

    }
}

ButtonListener class uses public static String method. Code:

public class ButtonListener extends MainActivity implements View.OnClickListener {
MainActivity activity;
EditText et1;
EditText et2;

public ButtonListener(MainActivity activity) {
    this.activity = activity;
}

@Override
public void onClick(View view) {

    switch (view.getId()){
        case R.id.sum:
            et1 = (EditText) activity.findViewById(R.id.nr1_edit_text);
            et2 = (EditText)activity.findViewById(R.id.nr2_edit_text);

            String nr1In = et1.getText().toString();
            String nr2In = et1.getText().toString();

            int nr1 = Integer.parseInt(nr1In);
            int nr2 = Integer.parseInt(nr2In);

            Intent intent = new Intent(activity, IntentActivity.class);
            intent.putExtra("result", StringUtil.sumUp(nr1, nr2));
            activity.startActivity(intent);
            break;
    }

}
}

IntentActivity class ´getIntent´ Code:

public class IntentActivity extends MainActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);


       TextView textView = (TextView)findViewById(R.id.result);

        Intent intent = getIntent();

        String fResult = intent.getStringExtra("result");
        textView.setText(fResult);


    }
}

And MainActivity Code:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        ButtonListener bl = new ButtonListener(this);

        Button sumUp= (Button)findViewById(R.id.sum_button);
        sumUp.setOnClickListener(bl);

    }
}

Solution

  • public class StringUtil {
    
        public static String sumUp(int nr1, int nr2, Context context){
            int sum = nr1 +nr2;
            String result;
    
            result = context.getString(R.string.result) + sum;
            return result;
    
            }
        }
    

    And use it like:

    StringUtil.sumUp(1,2, this); // from Activity
    StringUtil.sumUp(1,2, getContext()); // from Fragment