fragment中通过getActivity()获取Context空指针

试了好多方法不行;
在onCreateView()中可以获取,然后在onCreateView()中获取,并设置为全局变量,然后在其它方法中使用,可是郁闷的是还报空指针
java.lang.NullPointerException
at com.weather.weather.activity.WeatherFragment.jointURL(WeatherFragment.java:390)
at com.weather.weather.activity.MyAsyncTask.onPostExecute(MyAsyncTask.java:99)
at com.weather.weather.activity.MyAsyncTask.onPostExecute(MyAsyncTask.java:25)
at android.os.AsyncTask.finish(AsyncTask.java:631)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5457)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:879)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)
at dalvik.system.NativeStart.main(Native Method)

4个回答

建议在 Fragment的onActivityCreate()中才调用getActivity()。

onAttach(Activity activity),你在fragment的这个事件中得到activity

k43528814
k43528814 试过了,不行
4 年多之前 回复

貌似要沉了,别沉呀,别沉呀,别沉呀

应该不是getActivity()空指针,是别的地方空指针了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
LayoutInflater.from(context) 报空指针异常

这是打印出来的Log: Process: com.hql.rssr, PID: 1905 java.lang.NullPointerException at android.view.LayoutInflater.from(LayoutInflater.java:211) at com.hql.Adapter.FragmentExpanableListViewAdapter.<init>(FragmentExpanableListViewAdapter.java:32) at com.hql.fragment.TechnologyFragment$2.showListView(TechnologyFragment.java:94) at com.hql.fragment.TechnologyFragment$2.handleMessage(TechnologyFragment.java:81) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5045) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method) 报错的是这行代码:public FragmentExpanableListViewAdapter(Context context, ArrayList<GroupTitle> Gp, Map<Integer,List<RssItem>> ChildMap) { mInflater = LayoutInflater.from(context); //是这里。。。。。 this.Gp = Gp; this.ChilderMap = ChildMap; list = new ArrayList<RssItem>(); } 我在碎片里面调用的时候是这样子的: adapter = new FragmentExpanableListViewAdapter(getActivity(), title, list); 能运行,数据的加载和显示也没问题,就是在页面切换的时候会偶尔报这个错。我想问一下 这会不会是和多个碎片共用一个适配器有关,因为碎片的布局的样式都一样,只是加载的数据类型不一样 adapter = new FragmentExpanableListViewAdapter(getActivity(), title, list); (就是像这行代码一样 这是里面的title 和list 不一样而已) 我就直接用多个碎片对应一个适配器了 这是怎么回事呢?/d:

关于在fragment中取得layoutinflater的问题

我在用viewpage嵌套fragment的时候在fragment中取得layoutinflater,报空指针异常,调试的时候activity和layoutInflater都有值,然后就全为空了,代码如下: ``` @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = inflater.inflate(R.layout.fragment_business_base_order, container, false); activity = getActivity(); initView(); return rootView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); loadingData(); } ``` 然后,我稍微修改了一下,问题就解决了,代码如下: ``` @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = inflater.inflate(R.layout.fragment_business_base_order, container, false); activity = getActivity(); initView(); return rootView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); layoutInflater = getLayoutInflater(savedInstanceState); loadingData(); } ``` 所以我就感觉很疑惑,为什么第二种方法可以而第一种不可以,我又修改了一下代码,结果也是可以运行的,代码如下: ``` @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = inflater.inflate(R.layout.fragment_business_base_order, container, false); activity = getActivity(); layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); initView(); return rootView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); loadingData(); } ``` 有哪位大神给解释一下吗?

android fragment中listview.setAdapter为空的问题

android新手想多联系下fragment的使用,可在listview.setAdapter时遇到了如下问题: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference at com.example.sms.InsertFragment.onCreate(InsertFragment.java:73) 以下是代码 ``` private ListView insert_choose_listView; ArrayList<HashMap<String, String>> listItem; MyAdapter myAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); } listItem = new ArrayList<HashMap<String,String>>(); HashMap<String, String> map = new HashMap<String, String>(); map.put("Insert"," Insert Teacher");listItem.add(map); map.put("Insert"," Insert Student");listItem.add(map); map.put("Insert"," Insert Course");listItem.add(map); myAdapter=new MyAdapter(this.getActivity()); insert_choose_listView.setAdapter(myAdapter); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view=inflater.inflate(R.layout.fragment_insert, container, false); insert_choose_listView=(ListView)view.findViewById(R.id.insert_choose_listview); return view; } private class MyAdapter extends BaseAdapter { private LayoutInflater mInflater;//得到一个LayoutInfalter对象用来导入布局 public MyAdapter (Context context){ this.mInflater= LayoutInflater.from(context); } public int getCount(){ return listItem.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { InsertFragment.MyAdapter.ViewHolder holder; //观察convertView随ListView滚动情况 Log.v("MyListViewBase", "getView " + position + " " + convertView); if (convertView == null) { convertView = mInflater.inflate(R.layout.flistviewlayout,null); holder = new InsertFragment.MyAdapter.ViewHolder(); /**得到各个控件的对象*/ holder.title = (TextView) convertView.findViewById(R.id.ftext); convertView.setTag(holder);//绑定ViewHolder对象 } else{ holder = (InsertFragment.MyAdapter.ViewHolder)convertView.getTag();//取出ViewHolder对象 } /**设置TextView显示的内容,即我们存放在动态数组中的数据*/ holder.title.setText(listItem.get(position).get("Insert").toString()); return convertView; } /**存放控件*/ public final class ViewHolder{ public TextView title; } ``` 报错的73行是insert_choose_listView.setAdapter(myAdapter);这句 我在Activity中这样加入ListView是不会报错的可是放到Fragment中就成了空的 求解答

android Fragment 使用adapter时getView 方法不执行,在Activity下可以执行

在网上也看了很多相关文章了,还是没有解决,在Activity下使用此代码没有任何问题,数据可以显示,但是用了Fragment adapter的getView方法就一直不执行。 我觉得他们之间唯一的区别的就是context 和view 的不同,请大神指教 代码如下 public class BookSearchActivity extends Fragment { private BookSearchService service; private List<Books> list; private String result; private BookSearchAdapter adapter; private Handler mHandler; private ListView listView; private View v ; private Context context; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { context= getActivity(); v = inflater.inflate(R.layout.booksearch, container, false); return inflater.inflate(R.layout.booksearch, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mHandler = new Handler(); new Thread(new Runnable() { @Override public void run() { service = new BookSearchService(); list = service.queryBookList("", ""); if (list == null) result = ApplConst.FAILURE; else result = ApplConst.SUCCESS; adapter = new BookSearchAdapter(list,context); mHandler.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub listView = ((ListView) v.findViewById(R.id.books_list_view)); listView.setAdapter(adapter); listView.setDividerHeight(1); // 不显示分割线 listView.setCacheColorHint(Color.TRANSPARENT); //防止listview背景变黑 listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent newActivity = new Intent(view.getContext(), BookSearchActivity.class); Books book = (Books) listView.getItemAtPosition(position); newActivity.putExtra("BookId", book.getId()); newActivity.putExtra("categoryId", book.getCategoryId()); startActivity(newActivity); } }); } }); } }).start(); } } /////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////// Adapter public class BookSearchAdapter extends BaseAdapter { private int resourceId; private List<Books> booksList; private Map<Integer, View> rowViews = new HashMap<Integer, View>(); private Context context = null; public BookSearchAdapter(List<Books> objects, Context context) { booksList = objects; this.context = context; } @Override public View getView(int position, View convertView, ViewGroup parent) { View rowView = rowViews.get(position); if (rowView == null) { SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); LayoutInflater layoutInflater = LayoutInflater.from(context); rowView = layoutInflater.inflate(R.layout.booksearch_items, null); TextView publicationDate = (TextView) rowView .findViewById(R.id.dtPublicationDate); TextView bookName = (TextView) rowView .findViewById(R.id.txtBookName); TextView publish = (TextView) rowView .findViewById(R.id.TxtPublish); TextView writor = (TextView) rowView .findViewById(R.id.txtWritor); Books books = booksList.get(position); if (books.publicationDate != null) publicationDate.setText("出版时间:" + DateUtil.parseDateToString( books.getPublicationDate(), df)); if(books.getBookName()!=null) bookName.setText(books.getBookName()); if(books.getWritor()!=null) writor.setText("编者:"+books.getWritor()); if(books.getBookName()!=null) publish.setText("出版社:"+books.getPublish()); rowViews.put(position, rowView); } return rowView; }

findviewbyid 空指针的问题

各位大侠,最近发现一个问题个人觉得非常诡异。 在oncreate 中 listView_test = (ListView) this.findViewById(R.id.listcardinfo); 为null。 但是 同一个页面中的一个button的 onClick方法确可以找到这个listview,并且赋值。 附上XML ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:umadsdk="http://schemas.android.com/apk/res/com.LoveBus" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#FFFFFF" android:orientation="vertical" > <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试" android:textColor="#000000" android:textSize="22.0dip" /> <include layout="@layout/home_title_layout"/> </RelativeLayout> <android.support.v4.view.ViewPager android:id="@+id/vPager" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:layout_weight="1.0" android:flipInterval="30" android:persistentDrawingCache="animation" /> </LinearLayout> ``` ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <ListView android:id="@+id/listcardinfo" android:layout_width="fill_parent" android:layout_height="fill_parent" > </ListView> </LinearLayout> ```

Fragment使用嵌套listview闪退

import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; public class babyFragment extends Fragment { ListView lv_main;//页面整体list显示 babyViewPagerAdapter babyFramentAdapter; //启动页面 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.a, null); FragmentManager fm = getActivity().getSupportFragmentManager(); babyFramentAdapter = new babyViewPagerAdapter(getActivity(), fm); lv_main = (ListView) v.findViewById(R.id.listview); lv_main.setAdapter(babyFramentAdapter); return v; } } import android.content.*; import android.support.v4.app.*; import android.view.*; import android.widget.*; import kabu.love.zwy.*; public class babyViewPagerAdapter extends BaseAdapter { FragmentManager fm; public babyViewPagerAdapter(Context pContext, FragmentManager fm_tmp) { this.mContext = pContext; fm = fm_tmp; } Context mContext; @Override public int getCount() { return 2; } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { LayoutInflater _LayoutInflater = LayoutInflater.from(mContext); switch (i) { case 0: view = _LayoutInflater.inflate( R.layout.mc, viewGroup, false); babyFragment mOneFrament = new babyFragment(); FragmentTransaction babyInfotransaction = fm.beginTransaction(); babyInfotransaction.add(R.id.listview, mOneFrament).commit(); TextView k=(TextView) view.findViewById(R.id.kabu); k.append("k"); break; case 1: view = _LayoutInflater.inflate( R.layout.mc, viewGroup, false); babyFragment mTwoFrament = new babyFragment(); FragmentTransaction feedArchivestransaction = fm.beginTransaction(); feedArchivestransaction.add(R.id.listview, mTwoFrament).commit(); TextView y=(TextView) view.findViewById(R.id.kabu); y.append("y"); break; case 2:// break; case 3:// break; case 4:// break; case 5:// break; } return view; } } 谁帮忙解决一下,打开程序停留1秒闪退,

android空指针异常,求大神指教,已纠结好几天了。。。

package com.rong.shop.myshop.home; import android.content.Context; import android.support.v4.app.Fragment; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.GridView; import android.widget.ImageView; import android.widget.SimpleAdapter; import com.rong.shop.R; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** Created by Administrator on 2016/8/13. */ public class MyFragment_home extends Fragment { //ViewPager private ViewPager vpager_one; private ArrayList aList; private Adapter_homeViewPager mAdapter; //GridView private GridView gridview; private ImageView imageview; private Context mcontext = this.getActivity(); private List> listitem; private SimpleAdapter gAdapter; private int[] imgIds; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fg_home, container, false); //ViewPager vpager_one = (ViewPager) view.findViewById(R.id.vpager); aList = new ArrayList(); LayoutInflater li = getLayoutInflater(null); aList.add(li.inflate(R.layout.fg_home_viewpager_view_1, null, false)); aList.add(li.inflate(R.layout.fg_home_viewpager_view_2, null, false)); aList.add(li.inflate(R.layout.fg_home_viewpager_view_3, null, false)); aList.add(li.inflate(R.layout.fg_home_viewpager_view_4, null, false)); aList.add(li.inflate(R.layout.fg_home_viewpager_view_5, null, false)); mAdapter = new Adapter_homeViewPager(aList); vpager_one.setAdapter(mAdapter); //GridView gridview = (GridView)view.findViewById(R.id.gridview); listitem= new ArrayList<>(); imgIds = new int[]{ R.drawable.fg_home_gridview_1, R.drawable.fg_home_gridview_2, R.drawable.fg_home_gridview_3, R.drawable.fg_home_gridview_4, R.drawable.fg_home_gridview_5, R.drawable.fg_home_gridview_6, R.drawable.fg_home_gridview_7, R.drawable.fg_home_gridview_8, }; for (int i = 0; i < imgIds.length; i++) { Map showitem = new HashMap(); showitem.put("image", imgIds[i]); listitem.add(showitem); } gAdapter = new SimpleAdapter(mcontext, listitem, R.layout.fg_home_gridview_item, new String[] { "image" }, new int[]{R.id.gridview_image}); gridview.setAdapter(gAdapter);这里是第75行报错的代码 return view; } } 报错信息是: 09-01 08:49:51.260 22924-22924/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.rong.shop, PID: 22924 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rong.shop/com.rong.shop.myshop.home.MainActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5146) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at android.widget.SimpleAdapter.(SimpleAdapter.java:85) at com.rong.shop.myshop.home.MyFragment_home.onCreateView(MyFragment_home.java:75) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2074) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1286) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:758) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1671) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:619) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171) at android.app.Activity.performStart(Activity.java:5241) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2178) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5146) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) at dalvik.system.NativeStart.main(Native Method)

写了一个BaseFragment然后写了个Fragment继承自BaseFragment

我写了一个BaseFragment然后写了个Fragment继承自BaseFragment,但是我发现在onCreateView的时候总是显示的是空指针异常,相关报错日志我贴在下面,请大家帮忙看一下主要出错点在哪了呢? 我的报错如下: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewGroup$LayoutParams android.view.View.getLayoutParams()' on a null object reference 其中我的BaseFragment如下: /** * Created by HelenChen on 2017/4/6. * Fragmet基类 */ public abstract class BaseFragment extends Fragment { private View view; private Context context; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //view = initView(); context = (Context) getActivity(); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { //setUserVisibleHint(true); super.onActivityCreated(savedInstanceState); } public abstract void initView(); public abstract void initData(); public abstract void addListener(); } ``` ``` 我的一个Fragment继承了BaseFragment总是在这里报错: ![图片说明](https://img-ask.csdn.net/upload/201704/26/1493192550_300863.png) 我的Fragment代码如下: public class MonitorCompanyDetailFragment extends BaseFragment { private View view; @BindView(R.id.rl_title_root) public RelativeLayout rl_title_root; @BindView(R.id.tv_title_name) public TextView tv_title_name; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { try { view = inflater.inflate(R.layout.fragment_monitor_company_detail, null,false); initView(); initData(); }catch (Exception e){ e.printStackTrace(); } return view; } @Override public void initView() { } @Override public void initData() { UIUtils.zhuangtailan(getActivity(), rl_title_root); tv_title_name.setText("企业基本信息"); } @OnClick(R.id.iv_title_back) public void onClickEvents(View view){ switch (view.getId()){ /**返回*/ case R.id.iv_title_back: getActivity().finish(); break; } } @Override public void addListener() { } } ``` ```

使用Android ORMlite框架时候出现异常

![图片说明](https://img-ask.csdn.net/upload/201602/19/1455873247_358834.png) 主要界面如下![图片说明](https://img-ask.csdn.net/upload/201602/19/1455873288_961927.png) 想要向数据库中存入一条数据![图片说明](https://img-ask.csdn.net/upload/201602/19/1455873327_275152.png) BEAN类 package com.newtouch.bean; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; @DatabaseTable(tableName="tb_info") public class User { @DatabaseField(generatedId=true) private int id; @DatabaseField(columnName="name") private String name; @DatabaseField(columnName="pwd") private String pwd; public User(){} public User(String name,String pwd){ this.name=name; this.pwd=pwd; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } } ``` ``` package com.newtouch.DAO; import java.sql.SQLException; import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.support.ConnectionSource; import com.j256.ormlite.table.TableUtils; import com.newtouch.bean.User; import android.content.Context; import android.database.sqlite.SQLiteDatabase; public class DataBaseHelper extends OrmLiteSqliteOpenHelper{ private static final String TABLE_NAME = "sqlite-test.db"; private Dao<User, Integer> userDao; public DataBaseHelper(Context context) { super(context, TABLE_NAME, null, 2); } @Override public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) { try { TableUtils.createTable(arg1, User.class); } catch (SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2, int arg3) { try { TableUtils.dropTable(arg1, User.class, true); onCreate(arg0, arg1); } catch (SQLException e) { e.printStackTrace(); } } private static DataBaseHelper instance; public static synchronized DataBaseHelper getHelper(Context context) { if (instance == null) { synchronized (DataBaseHelper.class) { if (instance == null) instance = new DataBaseHelper(context); } } return instance; } /** * 获得userDao * * */ public Dao<User, Integer> getUserDao() throws SQLException { if (userDao == null) { userDao = getDao(User.class); } return userDao; } @Override public void close() { super.close(); userDao=null; } } ``` ``` package com.lintao.testdemo; import java.sql.SQLException; import ormLiteDatabaseHelper.DataBaseHelper; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.lintao.bean.User; public class Fragment1 extends Fragment { private EditText edit_save; private Button btn_save; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment1, container, false); edit_save = (EditText) view.findViewById(R.id.edit_save); btn_save = (Button) view.findViewById(R.id.btn_save); btn_save.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name=edit_save.getText().toString(); User u=new User(name); DataBaseHelper helper=DataBaseHelper.getHelper(getActivity()); try { helper.getUserDao().create(u); edit_save.setText(""); Toast.makeText(getActivity(), "信息已插入", Toast.LENGTH_SHORT).show(); } catch (SQLException e) { e.printStackTrace(); } } }); return view; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } } ``` ```

【Android studio】 【onClick NullPointerException】 java.lang.NullPointerException: Attempt to invoke interface method ··········.Adapter.goods_Adapter.onClick(goods_Adapter.java:44)

【Android studio】 【onClick NullPointerException】 报错:java.lang.NullPointerException: Attempt to invoke interface method ··········.Adapter.goods_Adapter.onClick(goods_Adapter.java:44) 空指针,在listview里的item设置了按钮监听事件 代码: ``` package com.example.nero.thecashregistersystem.Adapter; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageButton; import android.widget.TextView; import com.example.nero.thecashregistersystem.R; import com.example.nero.thecashregistersystem.bean.goodsInfo; import java.util.List; public class goods_Adapter extends ArrayAdapter<goodsInfo> implements View.OnClickListener { private int mResource; List<goodsInfo> goodsinfo ; private Context mContext; private LayoutInflater mInflater; // private MyClickListener mListener;//所有listview的item共用同一个 private BtnOnclick btnOnclick; public BtnOnclick getBtnOnclick() { return btnOnclick; } public void setBtnOnclick(BtnOnclick bottomBtnOnclick) { this.btnOnclick = btnOnclick; } public interface BtnOnclick{ public void click(View view,int index); } @Override public void onClick(View view) { btnOnclick.click(view,(int)view.getTag());//**这行代码报错** } //原: public goods_Adapter(Context context, int resource, List<goodsInfo> objects) { super(context, resource, objects); // mResource = R.layout.item; mResource = resource; } @Override public View getView(final int position, View convertView, ViewGroup parent) { goodsInfo goodsinfo = getItem(position); View view; ViewHolder viewHolder; if (convertView == null){ view = LayoutInflater.from(getContext()).inflate(mResource,null); viewHolder = new ViewHolder(); viewHolder.name = (TextView) view.findViewById(R.id.listview_name); viewHolder.goods_number = (TextView) view.findViewById(R.id.listview_goodsnumber); viewHolder.in_price = (TextView) view.findViewById(R.id.listview_inprice); viewHolder.out_price = (TextView) view.findViewById(R.id.listview_outprice); viewHolder.update_time = (TextView) view.findViewById(R.id.listview_updatetime); viewHolder.btn_add_jiesuan = (ImageButton) view.findViewById(R.id.btn_add_jiesuan); view.setTag(viewHolder); } else{ view = convertView; viewHolder = (ViewHolder) view.getTag(); } viewHolder.name.setText(goodsinfo.getName()); viewHolder.goods_number.setText(goodsinfo.getgoods_number()); viewHolder.in_price.setText(goodsinfo.getin_price()+""); viewHolder.out_price.setText(goodsinfo.getout_price()+""); viewHolder.update_time.setText(goodsinfo.getupdate_time()); //设置按钮监听 viewHolder.btn_add_jiesuan.setOnClickListener(this); viewHolder.btn_add_jiesuan.setTag(position); return view; } class ViewHolder{ TextView name; TextView goods_number; TextView in_price; TextView out_price; TextView update_time; ImageButton btn_add_jiesuan; // int position; } } ``` 在fragment里的相关代码是 ``` private void InitListview(final List<goodsInfo> goodsArray){ adapter = new goods_Adapter(getActivity(),R.layout.item,goodsArray); lv.setAdapter(adapter); adapter.setBtnOnclick(new goods_Adapter.BtnOnclick() { @Override public void click(View view, int index) { switch (view.getId()){ case R.id.btn_add_jiesuan: Toast.makeText( getActivity(), "listview的内部的按钮被点击了!,位置是:" + (Integer) view.getTag() + ",内容是-->" + goodsArray.get((Integer) view.getTag()).name, Toast.LENGTH_SHORT).show(); break; } } }); } ``` 而且报错那行还debug不了,不知道为什么,其他地方就可以debug。 view = LayoutInflater.from(getContext()).inflate(mResource,null);确定是item的id,debug看过了 希望大佬告诉我请问问题出在哪里??谢谢!!!

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

2020春招面试了10多家大厂,我把问烂了的数据库事务知识点总结了一下

2020年截止目前,我面试了阿里巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。我发现数据库事务在面试中出现的次数非常多。

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

在拼多多上班,是一种什么样的体验?我心态崩了呀!

之前有很多读者咨询我:武哥,在拼多多上班是一种什么样的体验?由于一直很忙,没抽出时间来和大家分享。上周末特地花点时间来写了一篇文章,跟大家分享一下拼多多的日常。 1. 倒时差的作息 可能很多小伙伴都听说了,拼多多加班很严重。这怎么说呢?作息上确实和其他公司有点区别,大家知道 996,那么自然也就能理解拼多多的“11 11 6”了。 所以当很多小伙伴早上出门时,他们是这样的: 我们是这样的: 当...

应聘3万的职位,有必要这么刁难我么。。。沙雕。。。

又一次被面试官带到坑里面了。面试官:springmvc用过么?我:用过啊,经常用呢面试官:springmvc中为什么需要用父子容器?我:嗯。。。没听明白你说的什么。面试官:就是contr...

太狠了,疫情期间面试,一个问题砍了我5000!

疫情期间找工作确实有点难度,想拿到满意的薪资,确实要点实力啊!面试官:Spring中的@Value用过么,介绍一下我:@Value可以标注在字段上面,可以将外部配置文件中的数据,比如可以...

自学编程的 6 个致命误区

嗨,小伙伴们大家好,我是沉默王二。本篇文章来和大家聊聊自学编程中的一些误区——这是我在 B 站上看了羊哥的一期视频后有感而发的文章。因为确实有很多读者也曾私信问过我这些方面的问题,很有代表性,所以我就结合自己的亲身体会来谈一谈,希望对小伙伴们有所启发。 01、追求时髦 所谓基础不牢,地动山摇啊。可很多小伙伴压根就没注意过这个问题,市面上出什么新鲜的技术就想去尝试,结果把自己学的乱七八糟,心灰意冷...

祝贺玄姐,创业两个月,估值近亿,融资几千万,奈学教育,太牛逼了!!!...

玄姐,男,前58同城技术委员会主席,前转转首席架构师,我的10年好友。一月下旬,玄姐找到我,说,哥们我准备创业了。画外音:详见《最好的朋友创业了,我必须为他站台》。番外篇《为何大家都叫...

你看,公司状告员工不加班,居然还告赢了

loonggg读完需要3分钟速读仅需 1 分钟今天跟大家聊一聊加班文化这个话题。今天微博热搜榜上有一个话题就是:#员工拒绝加班被判赔公司 1.8 万# 。具体什么情况呢?扬州某公司员工王...

立即提问
相关内容推荐