gpt4 book ai didi

android - 如何在第二个java文件中显示 toast ?

转载 作者:行者123 更新时间:2023-11-30 03:38:34 24 4
gpt4 key购买 nike

我已经阅读这个论坛好几天了,但我的问题没有找到答案。

当我尝试显示 Toast 时遇到 java.lang.NullPointerException 问题。

在我的 android 应用程序中,我有 MyWorkActivity.java,它是主要 Activity ,Statistika.java 旨在根据我的数据库中的数据计算一些统计数据。

在 MyWorkActivity 类(公共(public)类 MyWorkActivity 扩展 Activity 实现 OnClickListener)中,我有菜单项统计信息。

当我按下该项目时,我想显示布局 Statistika.xml 以及来自 statistika.java 的数据,如下所示:

public class MyWorkActivity extends Activity implements OnClickListener 
{
//Menu item statistika
else if(item.getItemId()==R.id.statistika)
{
//Layout statistika.xml
setContentView(R.layout.statistika);

Statistika nova_statistika = new Statistika();
nova_statistika.rsatiDanasJuceMjesec(sDatumZaPrikaz);
}
}

但我一直在 dbJuceDanas = this.openOrCreateDatabase(DatabaseInfo.IME_BAZE, MODE_PRIVATE,null); 上收到 java.lang.NullPointerException,所以我评论了数据库部分并只尝试了 Toast,但我仍然得到java.lang.NullPointerException.

这是我的 Statistika.java:

public class Statistika extends Activity
{
public void rsatiDanasJuceMjesec (String sDatumZaRacunanje)
{
Toast.makeText(getBaseContext(), "Toast is working! ", Toast.LENGTH_LONG).show();

//Računanje radnih sati za prikazani dan
// SQLiteDatabase dbJuceDanas = null;
// dbJuceDanas = this.openOrCreateDatabase(DatabaseInfo.IME_BAZE, MODE_PRIVATE,null);
//
// //Filtriranje rekordseta po datumu
// Cursor cJuceDanas = dbJuceDanas.rawQuery("SELECT * FROM " + DatabaseInfo.IME_TABELE + " WHERE " + DatabaseInfo.DATUM + " LIKE '%" + MyWorkActivity.sDatumZaPrikaz + "'", null);
//
// if (cJuceDanas !=null && cJuceDanas.getCount() > 0)
// {
// //Ako postoje upisi za datum trenutnog upisa
// int Column4 = cJuceDanas.getColumnIndex("r_vrijeme");
//
// //Sumiranje svih radnih vremena od danas
// fRVDanas=Float.valueOf(0);
// do
// {
// cJuceDanas.moveToFirst();
// fRVDanas=fRVDanas+cJuceDanas.getFloat(Column4);
//
// }while (cJuceDanas.moveToNext());
// }
}
}

这是 LogCat:

04-25 12:33:15.020: E/AndroidRuntime(927): FATAL EXCEPTION: main
04-25 12:33:15.020: E/AndroidRuntime(927): java.lang.NullPointerException
04-25 12:33:15.020: E/AndroidRuntime(927): at android.content.ContextWrapper.getResources(ContextWrapper.java:80)
04-25 12:33:15.020: E/AndroidRuntime(927): at android.widget.Toast.<init>(Toast.java:89)
04-25 12:33:15.020: E/AndroidRuntime(927): at android.widget.Toast.makeText(Toast.java:231)
04-25 12:33:15.020: E/AndroidRuntime(927): at myWork.amicus.ba.Statistika.rsatiDanasJuceMjesec(Statistika.java:69)
04-25 12:33:15.020: E/AndroidRuntime(927): at myWork.amicus.ba.MyWorkActivity.onOptionsItemSelected(MyWorkActivity.java:3028)
04-25 12:33:15.020: E/AndroidRuntime(927): at android.app.Activity.onMenuItemSelected(Activity.java:2205)
04-25 12:33:15.020: E/AndroidRuntime(927): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:748)

我试过以下方法:

Toast.makeText(this, "Toast is working! ", Toast.LENGTH_LONG).show();

Toast.makeText(Statistika.this, "Toast is working! ", Toast.LENGTH_LONG).show();

和许多其他组合,但它不起作用。

据我所知,问题出在上下文上。

我需要做什么才能显示 Toast 消息并从 Statistika.java 访问数据库?

最佳答案

Try this code

public class MyWorkActivity extends Activity implements OnClickListener
{
//Menu item statistika
else if(item.getItemId()==R.id.statistika)
{
//Layout statistika.xml
setContentView(R.layout.statistika);

Statistika nova_statistika = new Statistika(MyWorkActivity.this);
nova_statistika.rsatiDanasJuceMjesec(sDatumZaPrikaz);
}
}


public class Statistika extends Activity
{

Context context;

public Statistika(MyWorkActivity mainActivity) {
// TODO Auto-generated constructor stub

context = mainActivity;
}

public void rsatiDanasJuceMjesec (String sDatumZaRacunanje)
{
Toast.makeText(context, "Toast is working! ", Toast.LENGTH_LONG).show();
}

}

关于android - 如何在第二个java文件中显示 toast ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16214028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com