स्कूल के लिए मैं एक एंड्रॉइड ऐप बना रहा हूं। इस ऐप के लिए मेरे पास एक टुकड़ा है, जो डेटाबेस से सिर्फ तारों के साथ ग्रिडव्यू दिखाता है। इसके लिए मुझे एक टुकड़ा चाहिए। जब मैं getActivity() को कॉल करता हूं, तो यह शून्य हो जाता है। ऑनएट विधि, जैसा कि सुझाव दिया गया है here ऐप क्रैश होने से पहले कॉल नहीं किया जाता है। मुझे इसे कैसे हल करना चाहिए?
weekFragmetn.xml:प्राप्त करें निष्क्रियता खंड से शून्य वापस लौटना
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: (आइटम पर क्लिक करें के बाद से एक सूची में आइटम है कि गतिविधि, जहां टुकड़ा शुरू कर दिया है/एम्बेडेड शुरू होता है)
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}
त्वरित प्रतिक्रिया के लिए धन्यवाद। एटैच में mContext को एक्टिविटी() प्राप्त करने के लिए सेट किया जाना चाहिए, अब यह एक और साइट पर जो कुछ मिला है वह है। मैं इसे तुरंत कोशिश करूँगा। – Siebe
@Swilzard: "ऑनचैच को mContext को निष्क्रियता() प्राप्त करने के लिए सेट किया जाना चाहिए" - नहीं, आपको 'गतिविधि' की आवश्यकता होने पर बस 'getActivity()' पर कॉल करें। – CommonsWare
@ कॉमन्सवेयर: मेरे मामले में मैं बटन के क्लिक पर खंड शुरू कर रहा हूं .. तो यहां यह पहले से ही बनाई गई गतिविधि माना जाता है। लेकिन अब यहां अगर कॉल प्राप्त करें()। खंड() को टुकड़े से खत्म करें .. यह कुल पॉइंटर दे रहा है ... कोई सुझाव। – CoDe