Okul için bir android uygulaması yapıyorum. Bu uygulama için bir veritabanından sadece dizeleri ile bir gridview gösteren bir parçam var. Bunun için bir parçaya ihtiyacım var. GetActivity() öğesini çağırdığımda, null değerini döndürür. here önerildiği gibi onAttach yöntemi, uygulama çökmeden önce çağrılmaz. Bunu nasıl çözmeliyim?
weekFragmetn.xml:getAktivite geri dönen bölüm sıfırdan
package nl.siebeh.schoolmate;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
public class weekFragment extends Fragment {
dbLayer db;
Context mContext;
@Override
public void onAttach(Activity activity) {
mContext = getActivity();
Log.i("Schoolmate","onAttach called");
super.onAttach(activity);
}
public weekFragment newInstance(String title) {
Log.i("Schoolmate","newInstance called");
db = new dbLayer(mContext);
weekFragment fragment = new weekFragment();
ArrayList<ArrayList<Object>> result = null;
if(title == "leraren"){
result = db.getAllRowsAsArrays("weekTeacher", null);
}else if(title == "locatie"){
result = db.getAllRowsAsArrays("weekLocation", null);
}else if(title == "vakken"){
result = db.getAllRowsAsArrays("weekSubjects", null);
}
String[] array = new String[60];
for(int i = 0; i < 60; i++){
array[i] = "";
}
array[1] = getResources().getStringArray(R.array.days)[0];
array[2] = getResources().getStringArray(R.array.days)[1];
array[3] = getResources().getStringArray(R.array.days)[2];
array[4] = getResources().getStringArray(R.array.days)[3];
array[5] = getResources().getStringArray(R.array.days)[4];
for(int i = 1; i < 10; i++){
array[i] = Integer.toString(i);
}
for(int position = 0; position < result.size(); position++){
ArrayList<Object> row = result.get(position);
int hour = Integer.valueOf(row.get(1).toString()).intValue();
int day = Integer.valueOf(row.get(0).toString()).intValue();
int pos = 6 * hour + day;
array[pos] = row.get(position).toString();
}
fragment.mContent = array;
return fragment;
}
private String[] mContent = {""};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (container == null) {
return null;
}
View v = inflater.inflate(R.layout.week_fragment, container, false);
GridView gridview = (GridView) v.findViewById(R.id.gridview);
gridview.setAdapter(new weekAdapter(mContext, mContent));
return gridview;
}
@Override
public boolean onContextItemSelected(MenuItem item) {
return super.onContextItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
}
}
logcat: (öğe üzerinde tıklama beri fragmanı/başlatılmış gömülü olduğu aktiviteyi başlatır bir listede öğe)
09-29 19:10:56.611: INFO/ActivityManager(70): Starting: Intent { cmp=nl.siebeh.schoolmate/.overviewWeek } from pid 536
09-29 19:10:56.970: INFO/Schoolmate(536): newInstance called
09-29 19:11:06.631: WARN/ActivityManager(70): Launch timeout has expired, giving up wake lock!
09-29 19:11:06.671: WARN/ActivityManager(70): Activity idle timeout for HistoryRecord{40770188 nl.siebeh.schoolmate/.overviewWeek}
09-29 19:12:20.661: DEBUG/SntpClient(70): request time failed: java.net.SocketException: Address family not supported by protocol
09-29 19:14:11.811: DEBUG/dalvikvm(536): Debugger has detached; object registry had 413 entries
09-29 19:14:11.811: ERROR/SchoolMate(536): java.lang.NullPointerException
09-29 19:14:11.811: INFO/SchoolMate(536): Context is null
09-29 19:14:11.820: WARN/System.err(536): java.lang.NullPointerException
09-29 19:14:11.820: WARN/System.err(536): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
09-29 19:14:11.820: WARN/System.err(536): at nl.siebeh.schoolmate.dbLayer.<init>(dbLayer.java:50)
09-29 19:14:11.820: WARN/System.err(536): at nl.siebeh.schoolmate.weekFragment.newInstance(weekFragment.java:31)
09-29 19:14:11.820: WARN/System.err(536): at nl.siebeh.schoolmate.fragmentAdapter.getItem(fragmentAdaptar.java:21)
09-29 19:14:11.820: WARN/System.err(536): at nl.siebeh.schoolmate.titleFragmentAdapter.getItem(titleFragmentAdapter.java:1)
09-29 19:14:11.820: WARN/System.err(536): at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:62)
09-29 19:14:11.820: WARN/System.err(536): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:321)
09-29 19:14:11.820: WARN/System.err(536): at android.support.v4.view.ViewPager.populate(ViewPager.java:441)
09-29 19:14:11.820: WARN/System.err(536): at android.support.v4.view.ViewPager.onAttachedToWindow(ViewPager.java:563)
09-29 19:14:11.820: WARN/System.err(536): at android.view.View.dispatchAttachedToWindow(View.java:6156)
09-29 19:14:11.820: WARN/System.err(536): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1122)
09-29 19:14:11.820: WARN/System.err(536): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.820: WARN/System.err(536): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.820: WARN/System.err(536): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.820: WARN/System.err(536): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.820: WARN/System.err(536): at android.view.ViewRoot.performTraversals(ViewRoot.java:765)
09-29 19:14:11.830: WARN/System.err(536): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
09-29 19:14:11.840: WARN/System.err(536): at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 19:14:11.840: WARN/System.err(536): at android.os.Looper.loop(Looper.java:123)
09-29 19:14:11.840: WARN/System.err(536): at android.app.ActivityThread.main(ActivityThread.java:3683)
09-29 19:14:11.840: WARN/System.err(536): at java.lang.reflect.Method.invokeNative(Native Method)
09-29 19:14:11.840: WARN/System.err(536): at java.lang.reflect.Method.invoke(Method.java:507)
09-29 19:14:11.850: WARN/System.err(536): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-29 19:14:11.850: WARN/System.err(536): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-29 19:14:11.850: WARN/System.err(536): at dalvik.system.NativeStart.main(Native Method)
09-29 19:14:11.850: DEBUG/AndroidRuntime(536): Shutting down VM
09-29 19:14:11.850: WARN/dalvikvm(536): threadid=1: thread exiting with uncaught exception (group=0x40015560)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): FATAL EXCEPTION: main
09-29 19:14:11.870: ERROR/AndroidRuntime(536): java.lang.NullPointerException
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at nl.siebeh.schoolmate.weekFragment.newInstance(weekFragment.java:49)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at nl.siebeh.schoolmate.fragmentAdapter.getItem(fragmentAdaptar.java:21)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at nl.siebeh.schoolmate.titleFragmentAdapter.getItem(titleFragmentAdapter.java:1)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:62)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:321)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.support.v4.view.ViewPager.populate(ViewPager.java:441)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.support.v4.view.ViewPager.onAttachedToWindow(ViewPager.java:563)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.view.View.dispatchAttachedToWindow(View.java:6156)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1122)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.view.ViewRoot.performTraversals(ViewRoot.java:765)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.os.Looper.loop(Looper.java:123)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at android.app.ActivityThread.main(ActivityThread.java:3683)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at java.lang.reflect.Method.invokeNative(Native Method)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at java.lang.reflect.Method.invoke(Method.java:507)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-29 19:14:11.870: ERROR/AndroidRuntime(536): at dalvik.system.NativeStart.main(Native Method)
09-29 19:14:11.890: WARN/ActivityManager(70): Force finishing activity nl.siebeh.schoolmate/.overviewWeek
09-29 19:14:12.413: WARN/ActivityManager(70): Activity pause timeout for HistoryRecord{40770188 nl.siebeh.schoolmate/.overviewWeek}
09-29 19:14:21.910: WARN/ActivityManager(70): Launch timeout has expired, giving up wake lock!
09-29 19:14:22.441: WARN/ActivityManager(70): Activity idle timeout for HistoryRecord{4070c7a0 nl.siebeh.schoolmate/.schoolmate}
09-29 19:14:32.451: WARN/ActivityManager(70): Activity destroy timeout for HistoryRecord{40770188 nl.siebeh.schoolmate/.overviewWeek}
Hızlı yanıt için teşekkürler. OnAttach içinde mContext getActivity() olarak ayarlanmalıdır, şimdi ne var, başka bir sitede bulduğum bir şey. Hemen deneyeceğim. – Siebe
@Swilzard: "OnAttach'da, mContext öğesi getActivity()" olarak ayarlanmalıdır. - Hayır, "Activity" öğesine ihtiyacınız olduğunda sadece getActivity() işlevini çağırın. – CommonsWare
@CommonsWare: Benim durumumda düğmeyi tıklatırken parçayı başlatıyorum ... işte burada zaten oluşturulan etkinlik var. ama şimdi burada getActivity(). bitirmek() parçadan ... eğer NULL POINTER vererek ... herhangi bir öneri. – CoDe