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);
我是新手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);