2013-04-25 2 views
0

나는이 포럼을 며칠간 읽었으며 나의 문제에 대한 답을 찾지 못했습니다.두 번째 Java 파일에서 토스트를 표시하는 방법은 무엇입니까?

Toast를 표시하려고 할 때 java.lang.NullPointerException을 가져 오는 데 문제가 있습니다.

내 안드로이드 응용 프로그램에는 MyWorkActivity.java가 주요 활동이고 Statistika.java는 내 데이터베이스의 데이터를 기반으로 일부 통계를 계산하기위한 것입니다.

내부 클래스 MyWorkActivity (공용 클래스 MyWorkActivity는 Activity 구현 OnClickListener를 확장 함) 메뉴 항목은 statistika입니다.

내가 그 항목을 누를 때 나는이 같은 statistika.java 데이터와 레이아웃 Statistika.xml을 보여주고 싶은 :

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을 받고있다 데이터베이스 부분 및 토스트 만 시도했지만 여전히 java.lang.NullPointerException 얻을. 다음

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) 

나는 시도했다 :

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

이 로그 캣입니다 :

내 Statistika.java입니다

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

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

많은 다른 조합하지만 그렇지 않습니다 작업.

이해할 수 있듯이 문제는 문맥에 있습니다.

Statistika.java에서 토스트 메시지와 액세스 데이터베이스를 표시하려면 무엇을해야합니까?

+0

레이아웃을 전환하는 대신 조각을 사용해 보았습니까? – dumazy

+2

Y 주요 활동 자체에서 레이아웃을 설정하려고합니다. 의도를 통해 활동 (Statistika)을 시작하면 레이아웃을 설정할 수 있습니다. – Subburaj

+0

문제가 해결되었는지 여부 ?? – Subburaj

답변

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

} 
+0

나는 이것을 시험 할 것이다. 고맙습니다. – Amicussamir

+0

고맙습니다. 대단히 감사합니다. 토스트가 이제 작동 중입니다. 오직 내가 움직 인 것은 setContentView (R.layout.statistika); in Statistika.java. 그래서 당신의 대답은 내 문제를 해결했습니다. 나는 너의 대답을 받아 들였다. 다시 감사합니다. – Amicussamir

관련 문제