android在fragment中Toast.makeText不能显示

android在fragment中Toast.makeText(getActivity(),"当前网络不可用",Toast.LENGTH_LONG);不显示

5个回答

Toast.makeText(MainActivity.this, "登陆成功!",Toast.LENGTH_SHORT).show();
加上.show();

Toast.makeText(getActivity(),"当前网络不可用",Toast.LENGTH_LONG);该为
Toast.makeText(getActivity(),"当前网络不可用",Toast.LENGTH_LONG).show();

你可以在该activity 中定义一个共用的context 啊

fragment的context 可以用getactivity(),然后toast一定要show();

为啥不把.show()加上?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
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的函数也能实现数据通信,为嘛要使用接口? 使用接口的好处? } }); } }
有关fragment嵌套的问题,如何在fragment之间切换?
安卓小白最近在尝试使用Xamarin来进行安卓开发,手边有一个扫描二维码的demo,其中涉及到了fragment之间的切换与传值,有些地方不是很明白,请大神答疑解惑。 ![图片说明](https://img-ask.csdn.net/upload/201912/06/1575602488_3661.png) 如图所示除activity外每一个方框都代表一个fragment,下一级嵌套在上一级里边,嵌套的容器标注在旁边。目前,已经可以实现scanner接收zxing扫描来的数据,然后切换到show来显示。 目前的疑问是scanner是通过以下代码来获取返回值的,我不是很明白,有大神可以给我讲讲原理吗?另外还有一点疑惑的是可以从show返回zhi到上上级吗?或者回到activity? ``` public override void OnViewCreated(View view, Bundle savedInstanceState) { base.OnViewCreated(view, savedInstanceState); zxingOverlay = LayoutInflater.FromContext(this.Activity).Inflate(Resource.Layout.ZxingOverlay, null); scanFragment = new ZXingScannerFragment(ScanResultCallback); scanFragment.UseCustomView = true; scanFragment.CustomOverlayView = zxingOverlay; this.Activity.SupportFragmentManager.BeginTransaction() .Replace(Resource.Id.fragment_container, scanFragment) .Commit(); } private void ScanResultCallback(ZXing.Result result) { if (result == null || string.IsNullOrEmpty(result.Text)) { this.Activity.RunOnUiThread(() => { Toast.MakeText(this.Activity, "扫描已取消!", ToastLength.Short).Show(); ((HomeFragment)this.FragmentManager.Fragments[0]).SetCurrentTab("Main"); }); return; } else { //扫描成功 偶尔扫描结果会是一串数字??? this.Activity.RunOnUiThread(() => { //震动 Vibrator vibrator = (Vibrator)Application.Context.GetSystemService(Context.VibratorService); long[] pattern = { 0, 350, 220, 350 }; vibrator.Vibrate(pattern, -1); Console.WriteLine(result.Text); //此处加上二维码的格式要求,如果不符合要求,就继续扫描(我这里是判断是否是手机号码) if (IsTelephone(result.Text)) { //主动关闭摄像头,防止重复扫描 scanFragment.Shutdown(); Toast.MakeText(this.Activity, result.Text , ToastLength.Short).Show(); } else { Toast.MakeText(this.Activity, "扫描的二维码格式不正确!", ToastLength.Short).Show(); ((HomeFragment)this.FragmentManager.Fragments[0]).SetCurrentTab("Main"); } }); HandleScanresult(result); return; } } ```
Fragment中点击事件跳转活动报错
本来想实现点击“售后服务”这一块的Linearlayout跳转到Guarantee这个活动当中这一功能 ````public class ThirdFragment extends Fragment implements View.OnClickListener{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.third_fragment, container, false); LinearLayout guaranteell = (LinearLayout) view.findViewById(R.id.serviceGuaranteeId); guaranteell.setOnClickListener(this); return view; } @Override public void onClick(View view){ MainActivity mainActivity = new MainActivity(); Intent intent = new Intent(mainActivity, Guarantee.class); startActivity(intent); //Toast.makeText(mainActivity, "you clicked this", Toast.LENGTH_SHORT).show(); } }```` ![图片说明](https://img-ask.csdn.net/upload/201802/10/1518254265_779418.png) 但是报错java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
actionbar里添加发布和搜索按钮,但点击发布按钮无法跳转到相关fragment
public boolean onOptionsItemSelected(MenuItem item) { // The action bar home/up action should open or close the drawer. // ActionBarDrawerToggle will take care of this. //Fragment fragment = null; if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } // Handle action buttons switch(item.getItemId()) { case R.id.action_release: { Toast.makeText(this, R.string.action_release, Toast.LENGTH_SHORT).show(); ReleaseFragment fragment2 = new ReleaseFragment(); Bundle args2 = new Bundle(); args2.putString("name", "发布"); fragment2.setArguments(args2); FragmentTransaction transaction2 = getSupportFragmentManager().beginTransaction(); transaction2.replace(R.id.realtabcontent,fragment2); //transaction2.addToBackStack(null); transaction2.commit(); return true; } case R.id.action_search: { //Toast.makeText(this, R.string.action_search, Toast.LENGTH_SHORT).show(); SearchFragment fragment1 = new SearchFragment(); Bundle args1 = new Bundle(); args1.putString("name", "搜索"); fragment1.setArguments(args1); FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction(); transaction1.replace(R.id.realtabcontent,fragment1); //transaction1.addToBackStack(null); transaction1.commit(); return true; } default: return super.onOptionsItemSelected(item); } } 点击发布按钮会弹出toast提示,但是内容空白。点击搜索按钮会正确的显示内容和控件。
在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值,请教一下是为什么,有什么解决办法可以处理这个问题?
ADT中,下面一段Android代码中的if判断句前两个if为什么始终不执行(结果始终"偏旁")?
![图片说明](https://img-ask.csdn.net/upload/201710/13/1507862039_982606.png) MainActivity.java ``` package com.example.a; import javax.security.auth.PrivateCredentialPermission; import android.app.Activity; import android.content.DialogInterface; //import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import android.view.View.OnClickListener; /*与"import android.content.DialogInterface.OnClickListener;"冲突*/ public class MainActivity extends Activity { EditText shengao,tizhong; Button jisuan,quxiao; double height=0; double weight=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); shengao=(EditText)findViewById(R.id.shengao); tizhong=(EditText)findViewById(R.id.tizhong); jisuan=(Button)findViewById(R.id.jisuan); quxiao=(Button)findViewById(R.id.quxiao); jisuan.setOnClickListener(new View.OnClickListener() { //导入"import android.view.View.OnClickListener;"后无需加"View" @Override public void onClick(View v) { try{ if("".equals(shengao.getText().toString())) //if("".equals(shengao.getText().toString().trim())) //if(shengao.getText()==null || "".equals(shengao.getText().toString().trim())) { shengao.setError("身高不得为空"); } if("".equals(shengao.getText().toString().trim())) { tizhong.setError("体重不能为空"); } if("".equals(shengao.getText().toString())) //if("".equals(shengao.getText().toString().trim())) //if(shengao.getText()!=null && "".equals(shengao.getText().toString().trim())) { height=Double.parseDouble(shengao.getText().toString()); } if(tizhong.getText()!=null && "".equals(tizhong.getText().toString().trim())) { weight=Double.parseDouble(tizhong.getText().toString()); } //double bmi=weight*10000/height/height; double bmi=weight/(height*height); //Toast.makeText(MainActivity.this, ""+bmi, 10000); if(bmi<18) { Toast.makeText(MainActivity.this, "您身材偏瘦, 请加强营养",3000).show(); } else if(bmi<=25) { Toast.makeText(MainActivity.this, "您身材标准, 请继续保持",3000).show(); } else { Toast.makeText(MainActivity.this, "您身材偏胖, 请加强锻炼",3000).show(); } } catch(NumberFormatException e) { Toast.makeText(MainActivity.this, "身高或体重必须是数字", 3000).show(); e.printStackTrace(); } } }); quxiao.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { shengao.setText(""); tizhong.setText(""); } }); } } ``` fragment_main.xml ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="身高" /> <EditText android:id="@+id/shengao" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="体重" /> <EditText android:id="@+id/tizhong" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" /> <Button android:id="@+id/jisuan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="计算" /> <Button android:id="@+id/quxiao" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="取消" /> </LinearLayout> ```
Fragment 多页面,一层层返回
我的项目里面只有一个Activity,其它页面都是Fragment,现在出先的问题是 Fragment 之间的返回,假如我从Fragment A 跳到 Fragmen B 再从 Fragment B 跳到 Fragement C ,当我按手机的返回键的时候,页面C 会直接跳到Activity首页,代码如下,这是系统退出APP的 /** * 返回按鈕的點擊事件 */ @Override public void onBackPressed() { //Toast.makeText(getApplicationContext(),"回到首页",Toast.LENGTH_SHORT).show(); MyApplication.getInstance().getHomeFragment().list.clear(); MyApplication.getInstance().getHomeFragment().initListDate(); MyApplication.getInstance().getHomeFragment().initShrink(); } /** * 點擊兩次返回鍵返回程序 * * @param keyCode * @param event * @return */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { exit(); onBackPressed(); return true; } return super.onKeyDown(keyCode, event); } public void exit() { if ((System.currentTimeMillis() - exitTime) > 2000) { Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { finish(); System.exit(0); } }
fragment 动作监听事件无响应
1. public View onCreateView(LayoutInflater inflater, ViewGroup container, 2. Bundle savedInstanceState) { 3. 4. View v = inflater.inflate(R.layout.music_fragment, container, false); 5. toActivityMusic = (ImageButton) v.findViewById(R.id.toActivity_Music); 6. toActivityMusic.setOnClickListener(new OnClickListener() { 7. 8. @Override 9. public void onClick(View v) { 10. // TODO Auto-generated method stub 11. Toast.makeText(getActivity(), "ok!", DURINGTIME).show(); 12. } 13. }); 14. return inflater.inflate(R.layout.music_fragment, container, false); 15. } 16. 17. }
ViewPager+Fragment+ListView启动后第一个页面是空白,怎么改进解决?
ViewPager+Fragment(4个)+ListView启动后第一个页面是空白。 首先说明的是当listview里面的adapter不用callback的方法获取json的时候,一切都是正常的。 当4个fragment中只有一个listview的时候,用callback方法也是正常的,但是两个fragement中都有listview的时候,比如fragment1 & fragment2中各有一个listview,然后每个都callback就不行了,但是滑动一下,有时就可以了。 先说目录结构:MainActivity ,fragmentone,fragmentone2... 上代码: package com.example.viewpagerdemo; import java.util.ArrayList; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.Toast; import com.example.viewpagerdemo.myadapter.MyFragmentPagerAdapter; public class MainActivity extends FragmentActivity implements OnClickListener, OnPageChangeListener { private ViewPager mViewPager; private Button bt_list1, bt_list2, bt_list3, bt_list4; private ArrayList<Fragment> list = null; private Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.mainwin); mContext=MainActivity.this; initView(); initEvent(); } private void initView() { mViewPager = (ViewPager) findViewById(R.id.vpager); bt_list1 = (Button) findViewById(R.id.button1); bt_list2 = (Button) findViewById(R.id.button2); bt_list3 = (Button) findViewById(R.id.button3); bt_list4 = (Button) findViewById(R.id.button4); fragmentone fg1 = new fragmentone(); fragmenttwo fg2 = new fragmenttwo(); fragmentthree fg3 = new fragmentthree(); fragmentfour fg4 = new fragmentfour(); list = new ArrayList<Fragment>(); list.add(fg1); list.add(fg2); list.add(fg3); list.add(fg4); mViewPager.setAdapter(new MyFragmentPagerAdapter( getSupportFragmentManager(), list)); } private void initEvent() { mViewPager.setCurrentItem(0); bt_list1.setOnClickListener(this); bt_list2.setOnClickListener(this); bt_list3.setOnClickListener(this); bt_list4.setOnClickListener(this); mViewPager.setOnPageChangeListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button1: mViewPager.setCurrentItem(0); Toast.makeText(mContext, "当前选择:1",Toast.LENGTH_SHORT).show(); break; case R.id.button2: mViewPager.setCurrentItem(1); Toast.makeText(mContext, "当前选择:2",Toast.LENGTH_SHORT).show(); break; case R.id.button3: mViewPager.setCurrentItem(2); Toast.makeText(mContext, "当前选择:3",Toast.LENGTH_SHORT).show(); break; case R.id.button4: mViewPager.setCurrentItem(3); Toast.makeText(mContext, "当前选择:4",Toast.LENGTH_SHORT).show(); break; } } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); } @Override protected void onResume() { // TODO Auto-generated method stub mViewPager.setCurrentItem(1); mViewPager.setCurrentItem(0); super.onResume(); } @Override public void onPageScrollStateChanged(int state) { // TODO Auto-generated method stub if (state==2) { Toast.makeText(mContext, "当前选择:"+(mViewPager.getCurrentItem()+1),Toast.LENGTH_SHORT).show(); } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub //Toast.makeText(mContext, "当前选择:"+mViewPager.getCurrentItem(),Toast.LENGTH_SHORT); } } fragmentone: package com.example.viewpagerdemo; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.Toast; import com.example.viewpagerdemo.myCallBack.HttpUtil; import com.example.viewpagerdemo.myCallBack.ResultCallback; import com.example.viewpagerdemo.myadapter.ListAdapterOne; import com.example.viewpagerdemo.mybean.BaseBean; import com.example.viewpagerdemo.mybean.BeanOneArrayList; import com.example.viewpagerdemo.mybean.ListBeanOne; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; /** * fragment 1 * * @author dy * */ public class fragmentone extends Fragment { private Context mContext; private View viewOne; private ListView mListViewOne; private List<ListBeanOne> allDataOne; private ListAdapterOne oneAdapter; private ResultCallback callback = new ResultCallback() { @Override public void getReslt(String result) { // TODO Auto-generated method stub BaseBean b = HttpUtil.getData(mContext, result, "", ""); if (b.getResponsecode() == 1) { Type type = new TypeToken<BeanOneArrayList>() { }.getType(); Gson gson = new Gson(); BeanOneArrayList json = gson.fromJson(result, type); allDataOne = json.getData(); if (allDataOne.size() > 0) { oneAdapter = new ListAdapterOne(mContext, allDataOne); mListViewOne.setAdapter(oneAdapter); /* * Message message = new Message(); message.what=1; * mHandler.sendMessage(message); */ } else { Log.i("tag", "No Data"); } } } }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (viewOne != null) { ViewGroup parentViewGroup = (ViewGroup) viewOne.getParent(); if (parentViewGroup != null) { parentViewGroup.removeAllViewsInLayout(); } } else { viewOne = inflater.inflate(R.layout.fg1, container, false); } initView(); initEvent(); return viewOne; } private void initView() { mContext = this.getActivity(); mListViewOne = (ListView) viewOne.findViewById(R.id.listView1); } private void initEvent() { String JsonURL = AppConst.ListURL1; List<NameValuePair> p = new ArrayList<NameValuePair>(); p.add(new BasicNameValuePair("action", "1")); HttpUtil.doPost(JsonURL, p, callback); } } fragmenttwo: package com.example.viewpagerdemo; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.example.viewpagerdemo.myCallBack.HttpUtil; import com.example.viewpagerdemo.myCallBack.ResultCallback; import com.example.viewpagerdemo.myadapter.ListAdapterOne; import com.example.viewpagerdemo.myadapter.ListAdapterTwo; import com.example.viewpagerdemo.mybean.BaseBean; import com.example.viewpagerdemo.mybean.BeanTwoArrayList; import com.example.viewpagerdemo.mybean.ListBeanTwo; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; /** * fragment 2 * * @author dy * */ public class fragmenttwo extends Fragment { private Context mContext; private View viewTwo; private ListView mListViewTwo; private List<ListBeanTwo> allDataTwo; private ListAdapterTwo twoAdapter; private ResultCallback callback = new ResultCallback() { @Override public void getReslt(String result) { // TODO Auto-generated method stub BaseBean b = HttpUtil.getData(mContext, result, "", ""); if (b.getResponsecode() == 1) { Type type = new TypeToken<BeanTwoArrayList>() { }.getType(); Gson gson = new Gson(); BeanTwoArrayList json = gson.fromJson(result, type); allDataTwo = json.getData(); if (allDataTwo.size() > 0) { twoAdapter = new ListAdapterTwo(mContext, allDataTwo); mListViewTwo.setAdapter(twoAdapter); /* * Message message = new Message(); message.what=1; * mHandler.sendMessage(message); */ } else { Log.i("tag", "No Data"); } } } }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (viewTwo != null) { ViewGroup parentViewGroup = (ViewGroup) viewTwo.getParent(); if (parentViewGroup != null) { parentViewGroup.removeAllViewsInLayout(); } } else { viewTwo = inflater.inflate(R.layout.fg2, container, false); } initView(); initEvent(); return viewTwo; } private void initView() { mContext = this.getActivity(); mListViewTwo = (ListView) viewTwo.findViewById(R.id.listView2); } private void initEvent() { String JsonURL = AppConst.ListURL1; List<NameValuePair> p = new ArrayList<NameValuePair>(); p.add(new BasicNameValuePair("action", "2")); HttpUtil.doPost(JsonURL, p, callback); } } MyFragmentPagerAdapter: package com.example.viewpagerdemo.myadapter; import java.util.ArrayList; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; public class MyFragmentPagerAdapter extends FragmentPagerAdapter { private ArrayList<Fragment> list; public MyFragmentPagerAdapter(FragmentManager fm) { super(fm); } public MyFragmentPagerAdapter(FragmentManager fm, ArrayList<Fragment> list) { super(fm); this.list = list; } @Override public Fragment getItem(int arg0) { // TODO Auto-generated method stub return list.get(arg0); } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } } ``` ``` 其他的代码都是类似的,就不发了。 ``` ```
求大神指导Android 空指针异常问题
代码如下: private OnPreferenceClickListener mPrefClickListener = new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Intent intent = preference.getIntent(); try { startActivity(intent); } catch (ActivityNotFoundException e) { Toast.makeText(getActivity(), R.string.plugin_app_unavailable, Toast.LENGTH_LONG).show(); Log.w(TAG, preference.getKey() + " not available", e); } return true; } }; log 如下: 01-19 06:34:24.911 6327 6327 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.content.Intent.migrateExtraStreamToClipData()' on a null object reference 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1622) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.app.Activity.startActivityFromFragment(Activity.java:4548) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.app.Activity.startActivityFromFragment(Activity.java:4510) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.app.Fragment.startActivity(Fragment.java:1086) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.app.Fragment.startActivity(Fragment.java:1065) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at com.lenovo.settings.CharSettings$2.onPreferenceClick(CharSettings.java:114) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.preference.Preference.performClick(Preference.java:1015) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:214) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.widget.AdapterView.performItemClick(AdapterView.java:310) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.widget.AbsListView.performItemClick(AbsListView.java:1188) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.widget.AbsListView$PerformClick.run(AbsListView.java:3231) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.widget.AbsListView$3.run(AbsListView.java:4165) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:815) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:104) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.os.Looper.loop(Looper.java:194) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5731) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:372) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) 01-19 06:34:24.911 6327 6327 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 求大神指教,小白一枚,谢谢
安卓中的R文件错误,不知道怎么解决
不加上import android.R;之前是这样报错的 ![图片说明](https://img-ask.csdn.net/upload/201607/03/1467537426_755961.png) 加上import android.R;之后是这样报错的 ![图片说明](https://img-ask.csdn.net/upload/201607/03/1467537456_509423.png) xml中的代码应该没有问题,我是放在fragment_main.xml中的 <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: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.example.loginstate.MainActivity$PlaceholderFragment" > <EditText android:id="@+id/et_username" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/input_username" android:background="#ff33b5e5" /> <EditText android:layout_marginTop="15dp" android:layout_marginBottom="15dp" android:id="@+id/et_password" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/input_password" android:inputType="textPassword" android:background="#ff33b5e5" /> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <CheckBox android:layout_alignParentLeft="true" android:id="@+id/cb_rem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/rem_password" /> <Button android:paddingRight="50dp" android:paddingLeft="50dp" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/login" /> /> </RelativeLayout> </LinearLayout> ``` ``` MainActivity.java代码如下 package com.itheima.login; import java.security.PublicKey; import java.util.Map; import javax.security.auth.PrivateCredentialPermission; import javax.security.auth.login.LoginException; import com.itheima.login.util.UserInfoUtil; import android.R; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ public EditText et_username; private EditText et_password; private CheckBox cb_rem; private Button bt_login; private Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); mContext = this; // a.找到相应控件 et_username = (EditText) findViewById(R.id.et_username); et_password = (EditText) findViewById(R.id.et_password); cb_rem = (CheckBox) findViewById(R.id.cb_rem); bt_login = (Button) findViewById(R.id.bt_login); // b.设置按钮的点击事件 bt_login.setOnClickListener(this); //f.回显用户名密码 Map<String, String> map = UserInfoUtil.getUserInfo_android(mContext); if(map != null){ String username = map.get("username"); String password = map.get("password"); et_username.setText(username);//设置用户名 et_password.setText(password); cb_rem.setChecked(true);//设置复选框选中状态 } } private void login() { // c.在onclick方法中,获取用户输入的用户名密码和是否记住密码 String username = et_username.getText().toString().trim(); String userpassword = et_password.getText().toString().trim(); boolean isrem = cb_rem.isChecked(); //d.判断用户名密码是否为空,不为空请求服务器(省略,默认请求成功) if(username.isEmpty() || userpassword.isEmpty()){ Toast.makeText(mContext, "用户名密码不为空", Toast.LENGTH_SHORT).show(); return; } // e.判断是否记住密码,如果记住,将用户名密码保存本地。 if(isrem){ boolean result = UserInfoUtil.saveUserInfo_android(mContext, username, userpassword); if(result){ Toast.makeText(mContext, "保存成功", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(mContext, "保存失败", Toast.LENGTH_SHORT).show(); } }else{ Toast.makeText(mContext, "不用保存", Toast.LENGTH_SHORT).show(); } } public void onClick(View v){ switch (v.getId()) { case R.id.bt_login: Login(); break; default: break; } } } ``` ```
安卓Activity之间的跳转的问题
我通过登录的Activity在登录通过服务器验证过后,需要跳转到MainActivity,MainActivity中包含了两个Fragment,我使用: Toast.makeText(Login.this, "登录成功", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(Login.this, MainActivity.class); intent.putExtra("id", 999); startActivity(intent); finish(); 然后在MainActivity中的onResume方法接受Intent传过来的参数,根据参数选择显示的Fragment,但是当我登录成功,开始跳转时,程序黑屏卡死,然后出现ANR异常,现在毫无头绪。请帮帮忙,O(∩_∩)O谢谢。
Fragment getArguments() 返回空
有一个Fragment其中有一个作为根布局的tabHost: <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent"> <FrameLayout android:id="@+id/tab_1" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <!-- More FrameLayouts here - each are placeholders for Fragments --> </FrameLayout> </LinearLayout> </TabHost> 创建和更新Fragment的代码: private void updateTab(String tabId, int placeholder) { FragmentManager fm = getFragmentManager(); if (fm.findFragmentByTag(tabId) == null) { Bundle arguments = new Bundle(); arguments.putInt("current_day", mCurrentTab); EpgEventListFragment fragment = new EpgEventListFragment(); fragment.setArguments(arguments); fm.beginTransaction() .replace(placeholder, new EpgEventListFragment(), tabId) .commit(); } } 在`EpgEventListFragment`的`onCreate(...)`方法中,我在获取参数Bunble的时候总是得到null: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle arguments = getArguments(); if (arguments == null) Toast.makeText(getActivity(), "Arguments is NULL", Toast.LENGTH_LONG).show(); else mCurrentDay = getArguments().getInt("current_day", 0); ... } 不知道问题在哪? 我还试过在`onAttach(...)`中获取`getArguments()`,但是结果都一样,返回null。 请各位大侠帮忙解决一下哦。
新手 android求问 在fragment中调用闹钟功能 不报错 但是闹钟就是没用
代码 public void setAlarm(BeanMsg tmp){ int hourOfDay =Integer.parseInt( CurrentTime.getHour(tmp)); int minute =Integer.parseInt( CurrentTime.getMinue(tmp)); mCalendar.setTimeInMillis(System.currentTimeMillis()); mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay); mCalendar.set(Calendar.MINUTE, minute); mCalendar.set(Calendar.SECOND, 0); mCalendar.set(Calendar.MILLISECOND, 0); Log.v("hourOfDay",""+hourOfDay); Log.v("minute",""+minute); Intent intent = new Intent(getActivity(), AlarmReceiver.class); if(getActivity() == null) { isNUll = 1; } Log.v("isNULL",""+isNUll); PendingIntent pi = PendingIntent.getBroadcast(getActivity(), 0, intent,0); mAlarmManager=(AlarmManager)getActivity().getSystemService(MainActivity.ALARM_SERVICE); mAlarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pi); Toast.makeText(this.getActivity(), "闹钟设置成功", Toast.LENGTH_LONG).show();//提示用户
使用viewpager,fragment底栏导航,新的fragment替换旧的fragment
主activity public class MyActivity extends FragmentActivity { private ViewPager mViewPager; private IconTabPageIndicator mIndicator; List<BaseFragment> fragments; Button LoginButton; LayoutInflater inflater; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bmob.initialize(this, "d77a8e1ebfd8e187cbc814145918626d"); //requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_my); mViewPager = (ViewPager) findViewById(R.id.view_pager); mIndicator = (IconTabPageIndicator) findViewById(R.id.indicator); fragments =new ArrayList<BaseFragment>(); BaseFragment planFragment = new BaseFragment(); planFragment.setTitle("计划"); planFragment.setIconId(R.drawable.tab_plan_selector); //BaseFragment writeFragment = new BaseFragment(); Fragment01 writeFragment=new Fragment01(); writeFragment.setTitle("记账"); writeFragment.setIconId(R.drawable.tab_write_selector); Fragment02 recordFragment = new Fragment02(); recordFragment.setTitle("账单"); recordFragment.setIconId(R.drawable.tab_record_selector); Fragment03 userFragment = new Fragment03(); userFragment.setTitle("用户"); userFragment.setIconId(R.drawable.tab_user_selector); fragments.add(writeFragment); fragments.add(planFragment); fragments.add(recordFragment); fragments.add(userFragment); FragmentAdapter adapter = new FragmentAdapter(fragments,getSupportFragmentManager()); mViewPager.setAdapter(adapter); mIndicator.setViewPager(mViewPager); } **fragment03.java** fragment03中有一个button,下面是onclick消息,在点击按钮是怎样把fragment03加载成新的fragment??? class MyButton implements View.OnClickListener { public void onClick(View v){ edit_username = (EditText)view.findViewById(R.id.userNameText) ; edit_password = (EditText)view.findViewById(R.id.passwdText) ; string_username = edit_username.getText().toString();//登录账号 string_password = edit_password.getText().toString();//登录密码 //云验证 BmobQuery<login> bmobQuery= new BmobQuery<login>();; bmobQuery.addWhereEqualTo("username",string_username); bmobQuery.addWhereEqualTo("password",string_password); bmobQuery.findObjects(getActivity(), new FindListener<login>() { @Override public void onSuccess(List<login> list) { for (login gameScore : list) { //获得playerName的信息 gameScore.getUsername(); gameScore.getPassword(); //Toast.makeText(getActivity(),gameScore.getUsername()+gameScore.getPassword(), Toast.LENGTH_SHORT).show(); //切换fragment 出错??? Fragment newFragment = new Fragment01(); FragmentTransaction transaction =getFragmentManager().beginTransaction(); transaction.replace(R.id.view_pager,newFragment); transaction.commit(); } } public void onError(int i, String s) { Toast.makeText(getActivity(), "登录失败 ", Toast.LENGTH_SHORT).show(); //Log.v("test","登录失败"); } }); } } 用viewpager加fragment实现了底栏切换fragment,在某个fragment怎样重新加载fragment,某个fragment是登录功能,登录成功要加载用户信息,也就是新的fragment。怎么实现?在onCreateView中? ![图片说明](https://img-ask.csdn.net/upload/201604/15/1460718920_546782.png)
求教Fragment和ListView点击跳转
``` package gfxy.com.fragment_dahb; import android.app.Fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class Web extends Fragment { WebView we; EditText ed1; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.web,null); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getActivity().setContentView(R.layout.web); Button bu = (Button) getActivity().findViewById(R.id.webbut); ed1 = (EditText) getActivity().findViewById(R.id.webed); we = (WebView) getActivity().findViewById(R.id.webweb); WebSettings wes = we.getSettings(); wes.setJavaScriptEnabled(true); bu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setweb(); } }); we.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress == 100) { Toast.makeText(getActivity(), "网页加载完成", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getActivity(), "加载中", Toast.LENGTH_SHORT).show(); } } }); } public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && we.canGoBack()){ we.goBack(); return true; } return false; } public void setweb() { we.loadUrl("http://" + ed1.getText().toString().trim()); we.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); } } ``` ``` package gfxy.com.fragment_dahb; import android.app.Fragment; import android.content.Context; import android.graphics.Color; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.widget.DrawerLayout; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.RadioGroup; import org.achartengine.ChartFactory; import org.achartengine.GraphicalView; import org.achartengine.model.CategorySeries; import org.achartengine.renderer.DefaultRenderer; import org.achartengine.renderer.SimpleSeriesRenderer; /** * Created by Administrator on 2016/4/18. */ public class bt extends Fragment { public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); FrameLayout sa = (FrameLayout) getActivity().findViewById(R.id.fm); sa.removeAllViews(); CategorySeries dataset=buildCategoryDataset("测试饼图"); GraphicalView graphicalView=ChartFactory.getPieChartView(getActivity(),dataset, renderer);//饼状图 sa.addView(graphicalView, new RadioGroup.LayoutParams(RadioGroup.LayoutParams.FILL_PARENT, RadioGroup.LayoutParams.FILL_PARENT)); } protected CategorySeries buildCategoryDataset(String title) { CategorySeries categorySeries = new CategorySeries(title); categorySeries.add("胜 ", 30); categorySeries.add("负", 20); categorySeries.add("平", 50); return categorySeries; } int[] colors={Color.BLUE,Color.GREEN,Color.MAGENTA,Color.RED}; DefaultRenderer renderer=buildCategoryRenderer(colors); protected DefaultRenderer buildCategoryRenderer(int[] colors) { DefaultRenderer renderer = new DefaultRenderer(); renderer.setLegendTextSize(20);//设置左下角表注的文字大小 //renderer.setZoomButtonsVisible(true);//设置显示放大缩小按钮 renderer.setZoomEnabled(false);//设置不允许放大缩小. renderer.setChartTitleTextSize(30);//设置图表标题的文字大小 renderer.setChartTitle("统计结果");//设置图表的标题 默认是居中顶部显示 renderer.setLabelsTextSize(20);//饼图上标记文字的字体大小 //renderer.setLabelsColor(Color.WHITE);//饼图上标记文字的颜色 renderer.setPanEnabled(false);//设置是否可以平移 //renderer.setDisplayValues(true);//是否显示值 renderer.setClickEnabled(true);//设置是否可以被点击 renderer.setMargins(new int[]{20, 30, 15, 0}); //margins - an array containing the margin size values, in this order: top, left, bottom, right for (int color : colors) { SimpleSeriesRenderer r = new SimpleSeriesRenderer(); r.setColor(color); renderer.addSeriesRenderer(r); } return renderer; } } ``` ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="30dp" android:orientation="horizontal"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="sadsd" android:textSize="25dp" android:gravity="center" android:background="#0f4"/> </LinearLayout> <android.support.v4.widget.DrawerLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/lv" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="@null" android:choiceMode="singleChoice"> </ListView> <FrameLayout android:id="@+id/fm" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> </android.support.v4.widget.DrawerLayout> </LinearLayout> ``` 我想把Web。和bt显示在framelayout里面,求教怎么做? 还有ListView的点击跳转事件之前用还没问题,也不知道干了什么,然后就不能进行跳转了 求解决?? ``` package gfxy.com.fragment_dahb; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.view.View; import android.widget.AdapterView; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.SimpleAdapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends Activity { private String[] name = new String[]{ "饼图","静态折线","动态折线","Web","逐帧动画","缩放,透明,旋转,平移" }; private FragmentManager fm; private FragmentTransaction ft; private FrameLayout fml; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fml = (FrameLayout) findViewById(R.id.fm); ListView lv = (ListView)findViewById(R.id.lv); List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); for (int i=0;i<name.length;i++){ Map<String,Object> map = new HashMap<String,Object>(); map.put("name",name[i]); list.add(map); } lv.setAdapter(new SimpleAdapter(this,list,R.layout.content_main,new String[]{"name"},new int[]{R.id.text1})); // int wi = getWindowManager().getDefaultDisplay().getWidth();//获取手机宽度 // int hi = getWindowManager().getDefaultDisplay().getHeight();//获取手机高度 fm = getFragmentManager();//创建一个Fragment ft = fm.beginTransaction();//对Fragment进行添加,删除,替换 ft.replace(R.id.fm,new Fragment1()); ft.commit(); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(position==0){ ft = fm.beginTransaction(); ft.replace(R.id.fm,new bt()); ft.commit(); } if(position==1){ ft = fm.beginTransaction(); ft.replace(R.id.fm,new Fragment1()); ft.commit(); } if(position==3){ ft = fm.beginTransaction(); ft.replace(R.id.fm,new Web()); ft.commit(); } } }); } } ```
ohhttp请求服务器以后,根据结果,开启一个服务,在其他页面取消这个服务,但对线程有疑惑
我用okhttp请求服务器,在得到结果以后,根据结果内容,开启一个服务,服务是用来进行一个倒计时功能的, 我是在okhttp里的 ``` @Override public void onResponse(Call call, Response response) throws IOException { Looper.prepare(); String str=response.body().string(); /** * 根据服务器返回结果弹出Toast */ if (str.equals("预约成功")){ Toast.makeText(mContext,str,Toast.LENGTH_SHORT).show(); /** * 定时任务,闹钟提醒 */ ShareUtils.putString(mContext.getApplicationContext(),"ROOMNUMBER",POsition); ShareUtils.putString(mContext.getApplicationContext(),"SEATNMBER",number); //*************** Intent intent1=new Intent(mContext, MyService.class); mContext.startService(intent1); //*************** }else { Toast.makeText(mContext,str,Toast.LENGTH_SHORT).show(); } /** * */ Looper.loop(); } ``` 但我感觉这个方法不是在子线程里面运行吗?我在这个里面开启的服务,能关闭吗? 我是想在一个fragment里面,关闭这个服务,但是我关闭服务的代码写在主线程了, 两个不一样的线程开启服务,关闭服务能行吗? ``` handler =new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ case 9: //关掉预约成功之后计时的服务 Intent stopIntent = new Intent(getActivity(),MyService.class); getActivity().stopService(stopIntent); Toast.makeText(getContext(),"签到成功",Toast.LENGTH_SHORT).show(); //******* SHUJUKU(); //******** //ShareUtils.putBoolean(getContext().getApplicationContext(),"married",true); ShareUtils.putBoolean(getContext().getApplicationContext(),"married",true); SharedPreferences.Editor editor4 = getContext().getSharedPreferences("data", Context.MODE_PRIVATE) .edit(); editor4.putString("STATE", "1"); editor4.apply(); onResume(); break; ``` 我想在这里关闭这个服务,请问我目前这样写能达到我想要的效果吗? 我如果在第一个请求结果里面也用hander处理,在hander里面来开启这个服务会怎样呢?
fragment添加动态单选框radiogroup.addView(button)报错为空。
在fragment中动态添加单选框时(参照的https://blog.csdn.net/shihuiyun/article/details/52935392), radiogroup.addView(button);报错Attempt to invoke virtual method 'void android.widget.RadioGroup.addView(android.view.View)' on a null object reference;我的定义radiobutton了啊 ``` public void initViewTwo(){ RadioGroup radiogroup=(RadioGroup)getActivity().findViewById(R.id.gadiogroup); addview(radiogroup); } public List<String> getListSize(){ List<String>list=new ArrayList<String>(); list.add("服装33333"); list.add("玩具44444"); list.add("饰品5555"); list.add("饰品6666"); list.add("文具7777"); list.add("文具8888"); list.add("文具9999"); return list; } //动态添加视图 public void addview(RadioGroup radiogroup){ int index=0; for(String ss:getListSize()){ RadioButton button=new RadioButton(getActivity()); setRaidBtnAttribute(button,ss,index); radiogroup.addView(button); LinearLayout.LayoutParams layoutParams= (LinearLayout.LayoutParams) button .getLayoutParams(); layoutParams.setMargins(0, 0, DensityUtil.dpToPx(getActivity(),10), 0);//4个参数按顺序分别是左上右下 button.setLayoutParams(layoutParams); index++; } } @SuppressLint("ResourceType") private void setRaidBtnAttribute(final RadioButton codeBtn, String btnContent, int id ){ if( null == codeBtn ){ return; } // codeBtn.setBackgroundResource(R.drawable.radio_select); codeBtn.setTextColor(this.getResources().getColorStateList(R.drawable.top_select)); codeBtn.setButtonDrawable(new ColorDrawable(Color.TRANSPARENT)); //codeBtn.setTextSize( ( textSize > 16 )?textSize:24 ); codeBtn.setId( id ); codeBtn.setText( btnContent ); //codeBtn.setPadding(2, 0, 2, 0); codeBtn.setGravity( Gravity.CENTER ); codeBtn.setOnClickListener( new OnClickListener( ) { @Override public void onClick(View v) { Toast.makeText(getActivity(), codeBtn.getText().toString(), Toast.LENGTH_SHORT).show(); } }); //DensityUtilHelps.Dp2Px(this,40) LinearLayout.LayoutParams rlp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT , DensityUtil.dpToPx(getActivity(),25) ); codeBtn.setLayoutParams( rlp ); } ```
android 程序进入后台以后,过一段时间再点进去报错,黑屏。
## _**下面是写的异常日志抓取的报错代码:**_ android.util.SuperNotCalledException: Activity {com.st.sliding/com.st.sliding.MainActivity} did not call through to super.onCreate() at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2418) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524) at android.app.ActivityThread.access$800(ActivityThread.java:167) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1419) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5546) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759) ## _上面说我的onCreate为空,但是我有super.onCreate(savedInstanceState);这句代码的,主要原因是因为后台再点进来没有数据了,所以为空???不知道怎么解决了 ## 请教大指点指点~ ## ## 这是我的代码:_ public class MainActivity extends SlidingActivity { private SlidingActivityHelper mHelper; TodayFragment today; GroupFragment groupFragment; AdviceFragment adviceFragment; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 去掉标题栏 // this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.layout_main); // this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, // WindowManager.LayoutParams.FLAG_FULLSCREEN); // set the Behind View setBehindContentView(R.layout.frame_menu); FragmentTransaction fragmentTransaction = getFragmentManager() .beginTransaction(); LeftMenuFragment menuFragment = new LeftMenuFragment(); fragmentTransaction.replace(R.id.menu, menuFragment); fragmentTransaction.commit(); initSlidingMenu(); // //提示跳转 // showProgressDialog("提示", "正在跳转,请稍后......"); // } private void initSlidingMenu() { // 如果保存的状态不为空则得到之前保存的Fragment,否则实例化MyFragment // if (savedInstanceState != null) { // mContent = getSupportFragmentManager().getFragment( // savedInstanceState, "mContent"); // } // // if (mContent == null) { // mContent = new TodayFragment(); // } // customize the SlidingMenu SlidingMenu sm = getSlidingMenu(); sm.setShadowWidth(50); sm.setShadowDrawable(R.drawable.shadow); sm.setBehindOffset(180);// 设置slindingmenu的宽度 sm.setFadeDegree(0.35f); sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); getActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: toggle(); break; } return super.onOptionsItemSelected(item); } private long exitTime = 0; @Override public void onBackPressed() { if (System.currentTimeMillis() - exitTime > 2000) { Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { finish(); System.exit(0); android.os.Process.killProcess(android.os.Process.myPid()); } } }
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch
深深的码丨Java HashMap 透析
HashMap 相关概念 HashTab、HashMap、TreeMap 均以键值对像是存储或操作数据元素。HashTab继承自Dictionary,HashMap、TreeMap继承自AbstractMap,三者均实现Map接口 **HashTab:**同步哈希表,不支持null键或值,因为同步导致性能影响,很少被使用 **HashMap:**应用较多的非同步哈希表,支持null键或值,是键值对...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问