在Activity中如何访问fragment函数

我的Activity中有几个fragment。我想要在这个Activity中访问在其中一个fragment创建的函数

Fragment:

public class RandomFragment extends Fragment {

    public void randomfuntion (){

    }

}

Activity:

public class Main extends FragmentActivity{

    Fragment randomname;

    public void anotherrandomfuntion (){
        randomname. // I want to have access to randomfuntion
    }

}

1个回答

很简单

(RandomFragment)randomname.randomfuntion()

应该就能解决了

SachinKS
SachinKS 谢啦
大约 7 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android activity1如何调用activity2中fragment中定义的函数
public class activity2 extends fragment { ... public void thisfunction() ... } public class activity1 { //如何实现调用thisfunction() }
在Activity中调用Fragment的公有函数,变量为null
Activity代码 ``` String phone = ((EditText) findViewById(R.id.phone)) .getText().toString(); if (phone.isEmpty()) { Toast.makeText(ForgetPsdActivity.this, "请输入手机号码", Toast.LENGTH_LONG).show(); break; } else { ForgetPSD2Fragment fragment2 = new ForgetPSD2Fragment(); transaction.replace(R.id.fragmentcontainer, fragment2); fragment2.setViewPhone(phone); transaction.addToBackStack(null); step = 2; } ``` fragment2代码 ``` public class ForgetPSD2Fragment extends Fragment { private View view; private TextView txtPhone; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.forgetpsd2, container, false); txtPhone = (TextView) view.findViewById(R.id.txtphone); return view; } public void setViewPhone(String phone) { if (txtPhone == null) { Log.i("debug", phone + "abs"); }else{ txtPhone.setText(phone); } } } ``` 上边是我写的在Activity与fragment之间通信的例子,但是测试发现在调用fragment2.setViewPhone(phone);的时候,txtPhone为null值,请教一下是为什么,有什么解决办法可以处理这个问题?
|||android中activity与fragment之间利用回调函数传递数据|||
最近开始学习android开发,碰上大问题,想实现这样一个效果,点击fragment中的一个button按钮,然后将这个按钮文本传递给activity,同时在activity剩余的布局中也创建一个相同的按钮,,不知道看懂我说的没? 在网上各种找资料说利用fragment向activity传递数据时需要在fragment创建一个回调接口,可是创建好了还是不知道怎么传递,主要问题在于activity中如何实现此接口和重写此方法?有哪位可以给我一些完整的代码吗?拜托各位朋友帮我解决困扰我好多天问题!!!! 附上一张图啊 点击此红色按钮 按钮二字会传入下面这个activity的linearlayout中并生成一个按钮 http://img.bbs.csdn.net/upload/201410/13/1413172345_277720.png
fragment获取非关联activity中的数据
在fragment中写出setget方法来暴露给activity,经过运行,数据链表确实从activity传给了fragment,但是数据链表只能在setget两个方法中使用数据,在别的函数就不能用,这是怎么回事?求大神解答~万分感谢! ``` fragment中: public void setDrawPack(ArrayList<Integer> drawPack){ this.drawPack = drawPack; Log.d(TAG,"drawPack : " + drawPack); } public int getDrawPack(){ return drawPack; } ``` ``` Activity 中,先获取fragment的实例,再调用fragment.setdrawPack()函数,就能将数据链表传给fragment 但是想在fragment中的onClick的点击事件中使用drawPack中的数据,但是就是获取不到,在activity中写setget方法也不行,这是什么情况,怎么解决呀,在线等~ ```
fragment 中 onActivityResult怎么不执行?
activity A创建了fragment B,在fragment B中用startactivityResult()函数跳转到activity C。
fragment有回调函数吗?
我想实现这样的功能 : 由fragment跳到activity,activity销毁后回到该fragment执行某个方法, 类似activity之间 的 setactivityforresult();
关于Fragment的构造函数问题(如何才能传参进去)
请教一个问题,我用在xml的方式声明一个fragment: <fragment android:id=xxxx android:name=xxxxx../> (1)这种方式,然后在Activity中通过FragmentManager的findFragmentById来获取这个fragment,但是我发现我想传一个数据让fragment创造的时候初始化,这样不知道怎么处理。 (2)第二个问题,我用Fragment f = new Fragment()并用FragmentManager的事务来add,竟然报xml里面的错误,错误的指向都是指向xml里面 声明fragment 这行,是不是使用在xml里面声明fragment的这种方式都是只能用findFragmentById来创造fragment?用其他方式都会报错?
Android中Fragment和Activity间数据交换的问题
我想在Activity中读取Fragment中EditText中的字符串,找了一些资料都是使用接口回调的方法,下面程序附录中的第二种方法,我理解了一下发现第一种方法也可以实现,那么问什么非要使用接口回调的方法开实现数据共享而没有使用提供一个get方法来获取数据?是不是接口回调还有其他好处? Fragemnt的源码: import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.EditText; import android.widget.Toast; public class Fragment1 extends Fragment { private EditText editText; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view = inflater.inflate(R.layout.fragment1_layout, null); editText = (EditText) view.findViewById(R.id.editText1); return view; } //第一种方法 public String getData(){ return editText.getText().toString(); } // 第二种方法接口回调 public void getEditText(CallBack callBack) { callBack.getData(editText.getText().toString()); } public interface CallBack { public void getData(String str); } @Override public void onPause() { // TODO Auto-generated method stub super.onPause(); } } Activity代码 : import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Toast; import com.example.class_fragment_activity_communicating_data.Fragment1.CallBack; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); final Fragment1 fragment1 = new Fragment1(); transaction.add(R.id.right, fragment1, "fragment1"); transaction.commit(); findViewById(R.id.A_button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub fragment1.getEditText(new CallBack() {//通过接口回调获取Fragment中的值 @Override public void getData(String str) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, str, 1).show(); } }); // Toast.makeText(MainActivity.this, fragment1.getData(), 1).show(); //Fragment的实例调用Fragment的函数也能实现数据通信,为嘛要使用接口? 使用接口的好处? } }); } }
ArrayList获取数据的时候为空
Android开发过程中,已经将数据从activity中传到fragment中的链表List里面了,但是在获取链表的元素的时候发现,链表为空,但是链表的数据已经在fragmen中了,不知道什么原因,求大神指点 ``` 首先在fragment中写一个方法暴露给Activity, 在Activity中获取的fragment的实例,调用这个方法,将链表传给fragment Activity中: private ArrayListFragment arrayListFragment arrayListFragment = new ArrayListFragment(); arrayListFragment.setList(rateList); ``` ``` Fragment中: ArrayList<Integer> drawPack = new ArrayList<>(); public void setList(ArrayList<Integer> args){ drawPack = args; Log.d(TAG,"drawPack : " + drawPack); } 一旦不在setList里面使用drawPack,在fragment中的其他函数里面使用drawPack,就会报出drawPack为空的错误,在别的函数中使用log打印发现,drawPack为空,但是数据确实已经在fragment中了啊,不知道什么原因,请大神们解答,非常感谢,在线等,急~ ```
android开发 fragment能不能用startActivity来显示
android开发 fragment能不能用startActivity来显示。 是否有一个startActivityForResult函数可以显示fragment?
Android定义了一个ViewPager对象,在一个public函数中访问时变为了null
public class MerchantActivity extends FragmentActivity { private RadioGroup discount_layout; /** * 选桌位 */ private RadioButton table_rb; /** * 点菜 */ private RadioButton dish_rb; /** * 已选菜品 */ private RadioButton selected_rb; /** * 下划线标记 */ private View table_line, dish_line, selected_line; /** * 选菜Fragment */ private DishFragment dishFragment; /** * 选桌位Fragment */ private TableFragment tableFragment; /** * 已选菜Fragment */ private BillFragment billFragment; private ViewPager pager; //Fragment集合 private ArrayList<Fragment> fragments; /** * 标题名集合 */ private RadioButton[] titleText = null; /** * 接口定义 */ private Fragment2Fragment fragment2Fragment; // private Commercial commercial; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_merchant); initView(); } private void initView() { pager = (ViewPager) findViewById(R.id.pager); discount_layout = (RadioGroup) findViewById(R.id.discount_layout); table_rb = (RadioButton) findViewById(R.id.table_rb); dish_rb = (RadioButton) findViewById(R.id.dish_rb); selected_rb = (RadioButton) findViewById(R.id.selected_rb); table_line = findViewById(R.id.table_line); dish_line = findViewById(R.id.dish_line); selected_line = findViewById(R.id.selected_line); titleText = new RadioButton[]{table_rb, dish_rb, selected_rb}; discount_layout.setOnCheckedChangeListener(listener); fragments = new ArrayList<Fragment>(); dishFragment = new DishFragment(); tableFragment = new TableFragment(); billFragment = new BillFragment(); fragments.add(tableFragment); fragments.add(dishFragment); fragments.add(billFragment); MyFragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), fragments); pager.setAdapter(fragmentPagerAdapter); fragmentPagerAdapter.setFragments(fragments); pager.setOnPageChangeListener(new MyOnPageChangeListener()); // 第一次启动时选中第0个tab pager.setCurrentItem(0); pager.setOffscreenPageLimit(2); if(pager == null) { Log.d("pager In initView!", "Pager is NULL!"); } } private RadioGroup.OnCheckedChangeListener listener = new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, int i) { switch (i) { case R.id.table_rb: pager.setCurrentItem(0); break; case R.id.dish_rb: pager.setCurrentItem(1); if(pager != null) { Log.d("pager In RadioGroup!!", "Pager isn't NULL!"); } break; case R.id.selected_rb: pager.setCurrentItem(2); break; } if(pager == null) { Log.d("pagerLater In RadioGroup!", "Pager is NULL!"); } } }; /** * 切换更换下划线状态 * * @param position */ private void setVisible(int position) { switch (position) { case 0: table_line.setVisibility(View.VISIBLE); dish_line.setVisibility(View.INVISIBLE); selected_line.setVisibility(View.INVISIBLE); break; case 1: table_line.setVisibility(View.INVISIBLE); dish_line.setVisibility(View.VISIBLE); selected_line.setVisibility(View.INVISIBLE); break; case 2: table_line.setVisibility(View.INVISIBLE); dish_line.setVisibility(View.INVISIBLE); selected_line.setVisibility(View.VISIBLE); break; } } /** * 设置选中图标的文字颜色与 * 下划线可见 * * @param index */ private void chingeIndexView(int index) { for (int i = 0; i < titleText.length; i++) { titleText[i].setChecked(false); } if (index < titleText.length) { titleText[index].setChecked(true); } } private class MyFragmentPagerAdapter extends FragmentStatePagerAdapter { private ArrayList<Fragment> fragments; private FragmentManager fm; public MyFragmentPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments) { super(fm); this.fm = fm; this.fragments = fragments; } @Override public int getCount() { return fragments.size(); } @Override public Fragment getItem(int position) { return fragments.get(position); } @Override public int getItemPosition(Object object) { return POSITION_NONE; } public void setFragments(ArrayList<Fragment> fragments) { if (this.fragments != null) { FragmentTransaction ft = fm.beginTransaction(); for (Fragment f : this.fragments) { ft.remove(f); } ft.commit(); ft = null; fm.executePendingTransactions(); } this.fragments = fragments; notifyDataSetChanged(); } @Override public Object instantiateItem(ViewGroup container, final int position) { Object obj = super.instantiateItem(container, position); return obj; } } public class MyOnPageChangeListener implements ViewPager.OnPageChangeListener { @Override public void onPageSelected(int position) { chingeIndexView(position); setVisible(position); } @Override public void onPageScrollStateChanged(int state) { } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } } public interface Fragment2Fragment{ public void gotoFragment(ViewPager viewPager); } public void setFragment2Fragment(Fragment2Fragment fragment2Fragment){ this.fragment2Fragment = fragment2Fragment; } public void forSkip(){//在这个方法中pager对象为null,在其他的方法中都可以正常使用 if(pager == null) { Log.d("pager In forSkip!", "Pager is NULL!"); } if(fragment2Fragment!=null && pager != null){ fragment2Fragment.gotoFragment(pager); } } } 这是Activity类,其中包含了三个Fragment,三个Fragment都有一个共同的Activity而Activity通过其Viewpager的setCurrentItem(int position)可以设置显示第几个Fragment。所有在Activity中定义一个内部接口,并把要具体执行跳转的方法封装在这个接口中,并设置一个参数即可以具体设置显示哪个Fragment的ViewPager: public interface Fragment2Fragment{ public void gotoFragment(ViewPager viewPager); } 同时再该Activity中定义一个该接口类型的成员变量,并为其设置setter方法。 private Fragment2Fragment fragment2Fragment; public void setFragment2Fragment(Fragment2Fragment fragment2Fragment){ this.fragment2Fragment = fragment2Fragment; } 最后再给该Activity设置一个调用此接口中定义此方法的方法: public void forSkip(){ if(fragment2Fragment!=null){ fragment2Fragment.gotoFragment(viewPager); } } Fragment端的代码: FragmentA : 在Fragment中可以通过getActivity()获取来Activity。然后我们给该Activity注入其定义的Fragment2Fragment的变量fragment2Fragment此时我们必须实现Fragment2Fragment接口中定义的方法即具体的跳转方法,参数是ViewPager所以此时你可以设置你想要跳转到哪个Fragment中: final MainActivity mainActivity = (MainActivity) getActivity(); mainActivity.setFragment2Fragment(new MainActivity.Fragment2Fragment() { @Override public void gotoFragment(ViewPager viewPager) { //fragment传递数据 mainActivity.setFragmentArgu(string); viewPager.setCurrentItem(0); } }); mainActivity.forSkip(); 最后通过该Activity调用其中的forSkip方法,此时就会执行Fragment2Fragment接口的实现类的gotoFragment方法,这个方法由子类实现,这样就完成了两个Fragment的点击跳转。 我参照http://blog.csdn.net/canot/article/details/50533516这篇博客写的。 但是出现了了问题。就是pager为null问题。请问大神是咋回事。在此谢过大神!
Fragment无法进行高德定位,求解决!
同样的方法在Activity里可以正常显示,但在Fragment里只加载出了地图,无法显示定位。应该是Fragment的问题。求大神教育! public class ParkFragment extends Fragment implements LocationSource AMapLocationListener OnCheckedChangeListener{ private MapView mapView; private AMap aMap; private OnLocationChangedListener mListener; private LocationManagerProxy mAMapLocationManager; private ImageView imglist; @Override public View onCreateView(LayoutInflater inflater ViewGroup container Bundle savedInstanceState) { View view = inflater.inflate(R.layout.tab01 container false); imglist = (ImageView) view.findViewById(R.id.imglist); imglist.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity() ParklistActivity.class); startActivity(intent); } }); //在onCreate方法中给aMap对象赋值 mapView = (MapView) view.findViewById(R.id.map); mapView.onCreate(savedInstanceState);// 必须要写 aMap = mapView.getMap(); return view; } @Override public void onAttach(Activity activity) { super.onAttach(activity); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); init(); } /** * 初始化AMap对象 */ public void init() { if (aMap == null) { aMap = mapView.getMap(); setUpMap(); } } public void setUpMap() { aMap.setLocationSource((LocationSource) getActivity());// 设置定位监听 aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示 aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE); } /** * 此方法需存在 */ @Override public void onResume() { super.onResume(); mapView.onResume(); } /** * 此方法需存在 */ @Override public void onPause() { super.onPause(); mapView.onPause(); deactivate(); } /** * 方法必须重写 */ @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } /** * 此方法需存在 */ @Override public void onDestroy() { super.onDestroy(); mapView.onDestroy(); } @Override public void onLocationChanged(Location location) { } /** * 定位成功后回调函数 */ @Override public void onLocationChanged(AMapLocation amapLocation) { if (mListener != null && amapLocation != null) { if (amapLocation!=null&&amapLocation.getAMapException().getErrorCode() == 0) { mListener.onLocationChanged(amapLocation);// 显示系统小蓝点 } } } /** * 激活定位 */ @Override public void activate(OnLocationChangedListener listener) { mListener = listener; if (mAMapLocationManager == null) { mAMapLocationManager = LocationManagerProxy.getInstance(getActivity()); //此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗, //注意设置合适的定位时间的间隔,并且在合适时间调用removeUpdates()方法来取消定位请求 //在定位结束后,在合适的生命周期调用destroy()方法 //其中如果间隔时间为-1,则定位只定一次 mAMapLocationManager.requestLocationData( LocationProviderProxy.AMapNetwork 60*1000 10 this); } } /** * 停止定位 */ @Override public void deactivate() { mListener = null; if (mAMapLocationManager != null) { mAMapLocationManager.removeUpdates(this); mAMapLocationManager.destroy(); } mAMapLocationManager = null; } @Override public void onStatusChanged(String provider int status Bundle extras) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onCheckedChanged(RadioGroup group int checkedId) { // TODO Auto-generated method stub }
构造函数intent报错 undefined
使用fragment中有一个下拉列表,我想在选择下拉列表项目时启动一个新activity。结果报错: **The constructor Intent(UserHomeActivity, Class) is undefined UserHomeActivity.java /SwipeyTabs/src/com/recscores/android line 28 Java Problem** 实现代码: public class UserHomeActivity extends SherlockFragment{ Spinner spinnerTeam; Spinner spinnerLeague; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ View view =inflater.inflate(R.layout.user_home, container, false); // Team Spinner spinnerTeam = (Spinner)view.findViewById(R.id.spinner_team); spinnerTeam.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { **Intent ii = new Intent(UserHomeActivity.this,TeamHomeActivity.class); startActivity(ii); ** } public void onNothingSelected(AdapterView<?> adapterView) { return; } });
新手,刚开始学习Android,遇到难题(生命周期函数),求助啊,望大神们支招。。。
AndroidManifest.xml中:<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yang.lifecyle" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.yang.lifecyle.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.yang.lifecyle.OtherActivity" android:label="name"> </activity> </application> </manifest> **MainActivity.java** package com.yang.lifecyle; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends ActionBarActivity { private Button button; private ButtonListener buttonListener; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonListener=new ButtonListener(); button=(Button)findViewById(R.id.button); button.setOnClickListener(buttonListener); } class ButtonListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent=new Intent(); intent.setClass(MainActivity.this, OtherActivity.class); intent.putExtra("com.yang.lifecyle.Age", 20); startActivity(intent); } } **fragment_main** <RelativeLayout 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: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="com.yang.lifecyle.MainActivity$PlaceholderFragment" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="start" /> </RelativeLayout> ** OtherActivity.java** package com.yang.lifecyle; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.widget.TextView; public class OtherActivity extends ActionBarActivity{ private TextView textView; protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.other_activity); Intent intent=getIntent(); int age=intent.getIntExtra("com.yang.lifecyle.Age",10); textView=(TextView)findViewById(R.id.textView); textView.setText("age "+age); } } **other_activity.xml** <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="第二个Activity" /> </LinearLayout> **LogCat** 08-07 13:32:52.033: W/dalvikvm(391): threadid=1: thread exiting with uncaught exception (group=0x40015560) 08-07 13:32:52.133: E/AndroidRuntime(391): FATAL EXCEPTION: main 08-07 13:32:52.133: E/AndroidRuntime(391): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.yang.lifecyle/com.yang.lifecyle.MainActivity}: java.lang.NullPointerException 08-07 13:32:52.133: E/AndroidRuntime(391): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622) 08-07 13:32:52.133: E/AndroidRuntime(391): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638) 08-07 13:32:52.133: E/AndroidRuntime(391): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 08-07 13:32:52.133: E/AndroidRuntime(391): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928) 08-07 13:32:52.133: E/AndroidRuntime(391): at android.os.Handler.dispatchMessage(Handler.java:99) 08-07 13:32:52.133: E/AndroidRuntime(391): at android.os.Looper.loop(Looper.java:123) 08-07 13:32:52.133: E/AndroidRuntime(391): at android.app.ActivityThread.main(ActivityThread.java:3647) 08-07 13:32:52.133: E/AndroidRuntime(391): at java.lang.reflect.Method.invokeNative(Native Method) 08-07 13:32:52.133: E/AndroidRuntime(391): at java.lang.reflect.Method.invoke(Method.java:507) 08-07 13:32:52.133: E/AndroidRuntime(391): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 08-07 13:32:52.133: E/AndroidRuntime(391): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 08-07 13:32:52.133: E/AndroidRuntime(391): at dalvik.system.NativeStart.main(Native Method) 08-07 13:32:52.133: E/AndroidRuntime(391): Caused by: java.lang.NullPointerException 08-07 13:32:52.133: E/AndroidRuntime(391): at com.yang.lifecyle.MainActivity.onCreate(MainActivity.java:20) 08-07 13:32:52.133: E/AndroidRuntime(391): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-07 13:32:52.133: E/AndroidRuntime(391): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586) 08-07 13:32:52.133: E/AndroidRuntime(391): ... 11 more 08-07 13:32:52.153: W/ActivityManager(61): Force finishing activity com.yang.lifecyle/.MainActivity 08-07 13:32:52.659: W/ActivityManager(61): Activity pause timeout for HistoryRecord{406fee18 com.yang.lifecyle/.MainActivity} 08-07 13:33:03.612: W/ActivityManager(61): Activity destroy timeout for HistoryRecord{406fee18 com.yang.lifecyle/.MainActivity} 08-07 13:33:05.007: W/ActivityManager(61): Activity idle timeout for HistoryRecord{408b0e00 com.yang.lifecyle/.MainActivity}
百度地图 onReceiveLocation 回调
package cn.LCSys.fragment; import java.util.ArrayList; import java.util.Calendar; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BaiduMapOptions; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.BitmapDescriptorFactory; import com.baidu.mapapi.map.MapStatus; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MyLocationConfiguration; import com.baidu.mapapi.map.MyLocationData; import com.baidu.mapapi.map.SupportMapFragment; import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode; import com.baidu.mapapi.model.LatLng; import android.content.BroadcastReceiver; import cn.LCSys.R; import cn.LCSys.dataParse.AgentN; import cn.LCSys.dataParse.PollContent; import cn.LCSys.fragment.FragmentRealData.RealDataAdapter; import cn.LCSys.fragment.FragmentRealData.RealtimeData; import cn.LCSys.socket.Const; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.Configuration; import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; import android.widget.RadioButton; import android.widget.Toast; /** * 数据地图展示 * @ClassName: FragmentRealWifiMap * @author xtz * @version 1.0 * */ public class FragmentRealWifiMap extends Fragment { String TAG = "FragmentRealWifMap"; private BroadcastReceiver DataReceiver = null; View Curview; private MapView mMapView; BaiduMap mBaiduMap; public static Context s_context; private LocationMode mCurrentMode; LocationClient mLocClient; BitmapDescriptor mCurrentMarker; boolean isFirstLoc = true;// 是否首次定位 RadioButton Rbnormalmode;//普通图模式 RadioButton Rbstatellitemode;//卫星图模式 public MyLocationListenner myListener = new MyLocationListenner(); @SuppressWarnings("unused") private static final String LTAG = FragmentRealWifiMap.class.getSimpleName(); SupportMapFragment map; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //这个初始化很重要 SDKInitializer.initialize(getActivity().getApplicationContext()); Curview = inflater.inflate(R.layout.fragment_realinfo_wifimap, null); mMapView = (MapView) Curview.findViewById(R.id.realwifi_map); mBaiduMap = mMapView.getMap(); s_context = getActivity(); SetMarkPic();//设置位置图标 AddCompress();//添加同步图标 SetLocMode();//设置当前位置 initView(); return Curview ; } // void initView() { Rbnormalmode = (RadioButton)Curview.findViewById(R.id.normalmap); Rbstatellitemode = (RadioButton)Curview.findViewById(R.id.statellitemap); Rbnormalmode.setOnClickListener(new OnClickListener() { public void onClick(View v) { boolean checked = ((RadioButton) v).isChecked(); if(checked) { //普通图 mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); mLocClient.requestLocation(); } } }); Rbstatellitemode.setOnClickListener(new OnClickListener() { public void onClick(View v) { boolean checked = ((RadioButton) v).isChecked(); if(checked) {//卫星图 mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); mLocClient.requestLocation(); } } }); } //设置跟踪位置mark图标 private void SetMarkPic() { mCurrentMarker = BitmapDescriptorFactory .fromResource(R.drawable.icon_loc_go); } //设置位置模式 private void AddCompress() { mCurrentMode = LocationMode.FOLLOWING;//罗盘模式 mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); } //设置系统地图的位置模式,我们设置为跟随模式,即中心点在当前位置 private void SetLocMode() { mCurrentMode = LocationMode.FOLLOWING; mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); // 定位初始化 mLocClient = new LocationClient(getActivity()); mLocClient.registerLocationListener(myListener); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true);// 打开gps option.setAddrType("all");//返回的定位结果包含地址信息 option.setCoorType("bd09ll"); // 设置坐标类型返回的定位结果是百度经纬度 option.setScanSpan(1000); option.disableCache(true);//禁止启用缓存定位 mLocClient.setLocOption(option); mLocClient.start(); if(mLocClient.isStarted()) { int rt = mLocClient.requestLocation(); } } /** * 定位SDK监听函数 */ public class MyLocationListenner implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { // map view 销毁后不在处理新接收的位置 if (location == null || mMapView == null) { return; } Log.i(TAG,"now in MyLocationListenner"); MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(100).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); if (isFirstLoc) { isFirstLoc = false; LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll); mBaiduMap.animateMapStatus(u); } if(location.getLocType() == BDLocation.TypeOffLineLocation ) { Log.e(TAG,"Now is 离线定位!"); } if(location.getLocType() == BDLocation.TypeOffLineLocationFail) { Log.e(TAG,"离线定位失败!"); } //|| BDLocation.TypeOfflineLocationFail) } public void onReceivePoi(BDLocation poiLocation) { if (poiLocation == null){ return ; } StringBuffer sb = new StringBuffer(256); if (poiLocation.getLocType() == BDLocation.TypeNetWorkLocation) { sb.append("\naddr : "); sb.append(poiLocation.getAddrStr()); } } } @Override public void onStart() { super.onStart(); } @Override public void onResume() { super.onResume(); mMapView.onResume(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override public void onPause() { super.onPause(); mMapView.onPause(); } @Override public void onStop() { super.onStop(); } @Override public void onDestroy() { // 退出时销毁定位 mLocClient.stop(); // 关闭定位图层 mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; super.onDestroy(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); } }
recycview中添加底部按钮问题。
我就想在这个recycview中底部添加两个按钮 项目地址链接: https://pan.baidu.com/s/13EzJZ8CrRL6xRiFjUxJXqw 提取码: qjet ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552547394_832120.png) ``` public class CollectFragment extends Fragment { public RecyclerView mCollectRecyclerView;//定义RecyclerView //定义以goodsentity实体类为对象的数据集合 private ArrayList<GoodsEntity> goodsEntityList = new ArrayList<GoodsEntity>(); //自定义recyclerveiw的适配器 private CollectRecycleAdapter mCollectRecyclerAdapter; private static ChangeFragment mChange; public static CollectFragment newInstance(ChangeFragment changeFragment) { mChange = changeFragment; Bundle args = new Bundle(); CollectFragment fragment = new CollectFragment(); fragment.setArguments(args); return fragment; } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { //获取fragment的layout View view = inflater.inflate(R.layout.recyclerview, container, false); //对recycleview进行配置 return view; } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initRecyclerView(view); //模拟数据 initData(); } /** * TODO 模拟数据 */ private void initData() { for (int i=0;i<10;i++){ GoodsEntity goodsEntity=new GoodsEntity(); goodsEntity.setGoodsName("模拟数据"+i); goodsEntity.setGoodsPrice("100"+i); goodsEntityList.add(goodsEntity); } } /** * TODO 对recycleview进行配置 */ private void initRecyclerView(View view) { //获取RecyclerView mCollectRecyclerView=view.findViewById(R.id.collect_recyclerView); //创建adapter mCollectRecyclerAdapter = new CollectRecycleAdapter(getActivity(), goodsEntityList); //给RecyclerView设置adapter mCollectRecyclerView.setAdapter(mCollectRecyclerAdapter); //设置layoutManager,可以设置显示效果,是线性布局、grid布局,还是瀑布流布局 //参数是:上下文、列表方向(横向还是纵向)、是否倒叙 mCollectRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false)); //设置item的分割线 mCollectRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL)); //RecyclerView中没有item的监听事件,需要自己在适配器中写一个监听事件的接口。参数根据自定义 mCollectRecyclerAdapter.setOnItemClickListener(new CollectRecycleAdapter.OnItemClickListener() { @Override public void OnItemClick(View view, GoodsEntity data) { //此处进行监听事件的业务处理 Toast.makeText(getActivity(),"我是item",Toast.LENGTH_SHORT).show(); mChange.changeAttractionsContent(); } }); } } ``` ``` public class CollectRecycleAdapter extends RecyclerView.Adapter<CollectRecycleAdapter.myViewHodler> { private Context context; private ArrayList<GoodsEntity> goodsEntityList; //创建构造函数 public CollectRecycleAdapter(Context context, ArrayList<GoodsEntity> goodsEntityList) { //将传递过来的数据,赋值给本地变量 this.context = context;//上下文 this.goodsEntityList = goodsEntityList;//实体类数据ArrayList } /** * 创建viewhodler,相当于listview中getview中的创建view和viewhodler * * @param parent * @param viewType * @return */ @Override public myViewHodler onCreateViewHolder(ViewGroup parent, int viewType) { //创建自定义布局 View itemView = View.inflate(context, R.layout.item_content, null); return new myViewHodler(itemView); } /** * 绑定数据,数据与view绑定 * * @param holder * @param position */ @Override public void onBindViewHolder(myViewHodler holder, int position) { //根据点击位置绑定数据 GoodsEntity data = goodsEntityList.get(position); // holder.mItemGoodsImg; holder.mItemGoodsName.setText(data.goodsName);//获取实体类中的name字段并设置 holder.mItemGoodsPrice.setText(data.goodsPrice);//获取实体类中的price字段并设置 } /** * 得到总条数 * * @return */ @Override public int getItemCount() { return goodsEntityList.size(); } //自定义viewhodler class myViewHodler extends RecyclerView.ViewHolder { private ImageView mItemGoodsImg; private TextView mItemGoodsName; private TextView mItemGoodsPrice; public myViewHodler(View itemView) { super(itemView); mItemGoodsImg = itemView.findViewById(R.id.tx_news_simple_photos_01); mItemGoodsName = itemView.findViewById(R.id.tx_news_simple_photos_title); mItemGoodsPrice = itemView.findViewById(R.id.tx_news_simple_photos_time); //点击事件放在adapter中使用,也可以写个接口在activity中调用 //方法一:在adapter中设置点击事件 itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //可以选择直接在本位置直接写业务处理 //Toast.makeText(context,"点击了xxx",Toast.LENGTH_SHORT).show(); //此处回传点击监听事件 if(onItemClickListener!=null){ onItemClickListener.OnItemClick(v, goodsEntityList.get(getLayoutPosition())); } } }); } } /** * 设置item的监听事件的接口 */ public interface OnItemClickListener { /** * 接口中的点击每一项的实现方法,参数自己定义 * * @param view 点击的item的视图 * @param data 点击的item的数据 */ public void OnItemClick(View view, GoodsEntity data); } //需要外部访问,所以需要设置set方法,方便调用 private OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; } } ```
Android的DatePickerDialog的使用报错
使用了一个弹窗的日期选择器,可是设置参数的时候老报错,说没有相应的构造函数。但我明明就是按照需要的参数写的 ``` package com.example.love; import java.util.Calendar; import java.util.Date; import android.app.Activity; import android.app.ActionBar; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.DatePicker; import android.widget.ImageButton; import android.os.Build; public class MainActivity extends Activity { private ImageButton ib;//图标按钮 private Date nowtime;//当前时间 private Date time;//在一起的时间 private int nowyear;//当前的年份 private int year;//在一起的年份 private int nowmouth;//当前的月份 private int mouth;//在一起的月份 private int nowday;//当前的日期 private int day;//在一起的日期 private int hour;//现在的小时 private int muinet;//现在的分钟 private int ss;//现在的秒 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main1); //获取当前的时间 Calendar date = Calendar.getInstance(); nowyear = date.get(date.YEAR); nowmouth = date.get(date.MONTH); nowday = date.get(date.DAY_OF_MONTH); ib = (ImageButton) findViewById(R.id.imageButton); ib.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { new DatePickerDialog(this, new OnDateSetListener() { @Override public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) { // TODO 自动生成的方法存根 } }, nowyear, nowmouth, nowday).show(); }); } } ```
JAVA程序的执行入口怎么看?
我用ADT新建了一个工程,默认的有一个叫MainActivity.java的文档: ``` package com.example.m_note0305; import android.support.v7.app.ActionBarActivity; import android.support.v4.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /** * A placeholder fragment containing a simple view. */ public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); return rootView; } } } ``` 然后我用网上COPY的代码又新建了一个文档SlNotepad.java: ``` package com.example.m_note0305;//把SlNotepad类纳入到m_note0305包内 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import javax.swing.event.*; import java.util.*; import java.awt.datatransfer.*; class text implements Serializable{ /**/ private static final long serialVersionUID = -5303411698842652024L;//序列化版本对象控制 String keyword;//密码 String textmain;//文本部分 } public class SlNotepad extends JFrame implements ActionListener,ListSelectionListener{//公共类名必须和文件名一致 /**/ private static final long serialVersionUID = -1229804758759177927L; //extends表示继承 MenuBar bar;//菜单栏 Menu file,edit,format,help; MenuItem open,dsave,save,newwork,quit,about,fontchoose,colorchoose,backchoose,timeadd,keyopen,keysave,zcancel,copy,paste,cut,delete,selectall,search,autoline; MenuShortcut opencut,dsavecut,savecut,newworkcut,quitcut,aboutcut,fontchoosecut,colorchoosecut,backchoosecut,timeaddcut,keyopencut,keysavecut,zcancelcut,copycut,pastecut,cutcut,deletecut,selectallcut,searchcut,autolinecut; Toolkit tool=this.getToolkit(); Clipboard clip;//剪贴版 Image image=tool.getImage("data/icon.jpg");//框架图标 JTextArea textarea;//文本区域 //此处省略一万字 public static void main(String[] args){ SlNotepad SlNotepad=new SlNotepad("亮亮记事本1.0正式版"); SlNotepad.setVisible(true);//show(); } } ``` 程序跑起来的效果是,就仿佛后面的文档不存在一样。 MainActivity.java里面没有main函数啊,它是怎样开始执行的? 我不知道怎样把自定义的那个记事本类型用起来,求大神指点~~
关于安卓SQLiteOpenHelper.getDatabaseLocke的问题
小弟想要实现这样一个功能,在Fragment页面里面实现ListView显示,而ListView数据来源于数据库,加载ListView我写了一个Adapter,但是报错了,琢磨了好长时间也没解决,上论坛来求大神帮助,错误如下: ![图片说明](https://img-ask.csdn.net/upload/201604/30/1462003562_180759.jpg) 首先在FragmentRecord里面写的加载适配器的语句: 在onActivityCreated里面写的initData(); private void initData() { // TODO Auto-generated method stub c.set(Calendar.DAY_OF_MONTH,1);//设置日历为当月的1号 String start = sdf.format(c.getTime());//获取时间之后格式化输出 c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));//设置日历为当月的最大天数 String end = sdf.format(c.getTime());//获取时间后格式化输出 tv01.setText(start+"至"+end);//将输出的时间填充进文本框 adapter=new FragmentRecordAdapter(null,this,start, end);//可能有问题 listView_data.setAdapter(adapter); 然后适配器FragmentRecordAdapter里面写的: public FragmentRecordAdapter(Context context ,FragmentRecord fragmentrecord, String start,String end) { // TODO Auto-generated constructor stub this.f=fragmentrecord; this.c=context; adao2 = new AddDAO2(c,f); cursor = adao2.queryAllDetail(start, end); cursor.close(); 关于数据库的继承与SQLiteOpenHelper类: public class ActionDataHelper extends SQLiteOpenHelper { public static final String databese_name="FitnessNoteList.db";//数据库名称 public static final int version=1;//版本号,则是升级之后的,升级方法请看onUpgrade方法里面的判断 public ActionDataHelper(Context context,FragmentRecord fragment){//构造函数,接收上下文作为参数,直接调用的父类的构造函数 super(context,databese_name, null, version); //第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类 } @Override//创建数据库当数据库首次创建时执行该方法,一般将创建表等初始化操作放在该方法中执行,重写onCreate方法,调用execSQL方法创建表 public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub for(String sql:ActionConstants.CREATE_TABLES) { db.execSQL(sql); } for(String sql:ActionConstants.INIT_TABLES) { db.execSQL(sql); } } 用的数据库接口: public AddDAO2(Context context , FragmentRecord fragmentrecord) { // TODO Auto-generated constructor stub this.c=context; this.f=fragmentrecord; db = new ActionDataHelper(c , f).getWritableDatabase(); db.close(); } 然后一打开就报错了,建的数据库和表应该没问题,我用另外的Activity加载ListView可以实现查找并且显示,但是加载在Fragment页面里面适配器不知道该怎么写了,求大神帮助啊!!十分的感谢啊!
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
redis分布式锁,面试官请随便问,我都会
文章有点长并且绕,先来个图片缓冲下! 前言 现在的业务场景越来越复杂,使用的架构也就越来越复杂,分布式、高并发已经是业务要求的常态。像腾讯系的不少服务,还有CDN优化、异地多备份等处理。 说到分布式,就必然涉及到分布式锁的概念,如何保证不同机器不同线程的分布式锁同步呢? 实现要点 互斥性,同一时刻,智能有一个客户端持有锁。 防止死锁发生,如果持有锁的客户端崩溃没有主动释放锁,也要保证锁可以正常释...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目 Google Guava 参考博客
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
立即提问