Android:应用程序在从另一个 class 调用 toast 时崩溃

Android: App crashes on calling toast from another class

我是新手Android开发者。 我创建了一个 package-private class 扩展应用程序,并包含特定功能所需的代码。我基本上想通过吐司显示用户选择的按钮是否是正确的选择。由于我必须为许多活动调用此代码,因此我刚刚为其创建了一个 package-private class。但是,在单击按钮时,应用程序崩溃了。请参阅下面给出的代码以供参考。

I cannot change the onClick method to non-static because if I do that, Android Studio shows an error, and if I change it to static, I am unable to use the method getApplicationContext(), because it is not accessible inside static blocks.

我认为使用 view.getContext() 导致了崩溃。

是否有任何解决方法或解决方案? 非常感谢您的帮助。谢谢:)

这是供您参考的代码。

activity.java:

public class activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Button btn = (Button) findViewById(R.id.btn);
        btn.setOnClickListener(functions.select);
        functions.makeLayout(expression, buttons);
    }
}

这是导致应用程序崩溃的代码。

functions.java:

class functions extends Application {

    private static int idx;

    public static View.OnClickListener select=new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int selected_index=(int) view.getTag();
            if(selected_index==idx)
            {
                Toast.makeText(view.getContext(), "Correct.", Toast.LENGTH_LONG).show();
                ((Button) view).setTextColor(Color.GREEN);
            }
            else
            {
                Toast.makeText(view.getContext(), "Wrong.", Toast.LENGTH_LONG).show();
                ((Button) view).setTextColor(Color.RED);
            }
        }
    };

好的,我发现不是 view.getContext() 而是 int selected_index=(int) view.getTag(); 行导致了崩溃。我先把它变成一个字符串,然后用下面的代码解决它:

String selected_index=view.getTag.toString();
int sidx=Integer.parseInt(selected_index);