Fragment内按钮使用Intent跳转Activity时强退
 public class Fragment_searchall extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_searchall, container, false);

        Button b =(Button)getActivity().findViewById(R.id.button);
        b.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent intent = new Intent(getActivity(), Activity_settings.class);
                startActivity(intent);
            }
        });
        return view;


    }

}

Fragment布局文件就一个按钮,Activity已经在AndroidMainfest注册

这是控制台报错信息

 04-15 02:12:38.158 9946-9946/com.level1.yukinoshita.swan0 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            Process: com.level1.yukinoshita.swan0, PID: 9946
                                                                            java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
                                                                                at com.level1.yukinoshita.fragment.Fragment_searchall.onCreateView(Fragment_searchall.java:27)
                                                                                at android.app.Fragment.performCreateView(Fragment.java:2220)
                                                                                at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:973)
                                                                                at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148)
                                                                                at android.app.BackStackRecord.run(BackStackRecord.java:793)
                                                                                at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535)
                                                                                at android.app.FragmentManagerImpl$1.run(FragmentManager.java:482)
                                                                                at android.os.Handler.handleCallback(Handler.java:739)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                at android.os.Looper.loop(Looper.java:148)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-15 02:12:42.958 9946-9946/com.level1.yukinoshita.swan0 I/Process: Sending signal. PID: 9946 SIG: 9

4个回答

好像不是getActivity().findViewById吧,应该是view.findViewById写样吧

github_38319507
ChellyZ 666 果然是这样 十分感谢
接近 3 年之前 回复

Button对象是空,,,


view.findViewById

这个你要用View.findview
不能用getactivity

getactivity 是获取主页面的 你现在在Fragment 页面里 当然找不到啦

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
尝试使用Intent跳转至新Activity时程序停止运行
``` package com.level1.yukinoshita.swan0; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.view.View; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import com.level1.yukinoshita.fragment.Fragment_autocharge; import com.level1.yukinoshita.fragment.Fragment_replyaction; import com.level1.yukinoshita.fragment.Fragment_searchall; import com.level1.yukinoshita.fragment.Fragment_socialaction; import com.level1.yukinoshita.fragment.Fragment_socialuser; import com.level1.yukinoshita.fragment.Fragment_userfavor; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { // private RecyclerView contentRecyclerView; // private List<String> recycleViewData; // private RecycleViewSimpleAdapter contentRecyclerViewAdapter; private static final int STACK=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle(""); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "正在刷新", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); } @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @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(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_socialuser) { // 分配对应Fragment Fragment_socialuser fragment = new Fragment_socialuser(); getFragmentManager().beginTransaction().replace(R.id.main_contentview, fragment).commit(); } else if (id == R.id.nav_socialaction) { Fragment_socialaction fragment = new Fragment_socialaction(); getFragmentManager().beginTransaction().replace(R.id.main_contentview, fragment).commit(); } else if (id == R.id.nav_autocharge) { Fragment_autocharge fragment = new Fragment_autocharge(); getFragmentManager().beginTransaction().replace(R.id.main_contentview, fragment).commit(); } else if (id == R.id.nav_replyaction) { Fragment_replyaction fragment = new Fragment_replyaction(); getFragmentManager().beginTransaction().replace(R.id.main_contentview, fragment).commit(); } else if (id == R.id.nav_userfavor) { Fragment_userfavor fragment = new Fragment_userfavor(); getFragmentManager().beginTransaction().replace(R.id.main_contentview, fragment).commit(); } else if (id == R.id.nav_searchall) { Fragment_searchall fragment = new Fragment_searchall(); getFragmentManager().beginTransaction().replace(R.id.main_contentview, fragment).commit(); } else if (id == R.id.nav_settings) { // 使用Activity Intent intent = new Intent(this, Activity_settings.class); startActivity(intent); } else if (id == R.id.nav_developer) { // 使用Activity } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } } ``` 报错信息如下 04-15 01:34:22.769 6114-6114/com.level1.yukinoshita.swan0 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.level1.yukinoshita.swan0, PID: 6114 android.content.ActivityNotFoundException: Unable to find explicit activity class {com.level1.yukinoshita.swan0/com.level1.yukinoshita.swan0.Activity_settings}; have you declared this activity in your AndroidManifest.xml? at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1794) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512) at android.app.Activity.startActivityForResult(Activity.java:3917) at android.app.Activity.startActivityForResult(Activity.java:3877) at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:842) at android.app.Activity.startActivity(Activity.java:4200) at android.app.Activity.startActivity(Activity.java:4168) at com.level1.yukinoshita.swan0.MainActivity.onNavigationItemSelected(MainActivity.java:125) at android.support.design.widget.NavigationView$1.onMenuItemSelected(NavigationView.java:151) at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:811) at android.support.v7.view.menu.SubMenuBuilder.dispatchMenuItemSelected(SubMenuBuilder.java:84) at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152) at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:958) at android.support.design.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:318) at android.view.View.performClick(View.java:5198) at android.view.View$PerformClick.run(View.java:21147) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 04-15 01:34:24.908 6114-6114/com.level1.yukinoshita.swan0 I/Process: Sending signal. PID: 6114 SIG: 9
android 用fragment里的这个intent,点击按钮无法跳转到下一个活动呢
public class SponsorGroupActivityFragment extends Fragment { private Button createNewGroupActivity; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.sponsor_group_activity_frag,container,false); createNewGroupActivity = (Button) view.findViewById(R.id.create_new_group_activity); createNewGroupActivity.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(),CreateGroupActivityActivity.class); startActivity(intent); } }); return view; } }
求大神解答从Fragment中的按钮跳转至另一个页面的问题
小弟学习安卓的时候遇到了问题,如下。 我显示编辑了一个Fragment的类,代码如下: import android.app.Activity; import android.app.Fragment; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; public class FragmentRecord extends Fragment implements View.OnClickListener{ private ListView listView; private String[] mStrings = {"运动1", "运动2", "运动3"}; private ArrayAdapter<String>array_adapter; private ImageView btn_add; @Override public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView =inflater.inflate(R.layout.fragment_record, container, false); listView = (ListView)rootView.findViewById(R.id.listView_data);//获取自己视图里的控件引用 btn_add=(ImageView) rootView.findViewById(R.id.btn_add); //return inflater.inflate(R.layout.fragment_record,container,false); return rootView; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); array_adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, mStrings); listView.setAdapter(array_adapter); btn_add=(ImageView) getActivity().findViewById(R.id.btn_add); btn_add.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent =new Intent(getActivity(),FragmentTarget.class); FragmentRecord.this.startActivity(intent); } } 我设置了按钮的点击事件,可是为什么一点按钮就报错,错误如下:、 ![图片说明](https://img-ask.csdn.net/upload/201604/16/1460792008_617819.jpg) 然后我想要跳转的页面是这样的一个: import android.app.Activity; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class FragmentTarget extends Fragment { @Override public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_target, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); } } 不太清楚如何改可以改了这个FragmentTartget强制转换成activity的错误,求大神解答,十分感谢!
Android studio 点击登录,提示停止运行,代码无报错
就只有点击按钮跳转activity功能,之前成功跳转,然后今天在跳转后的 界面添加了fragment功能,实现导航栏,然后就跳转不成功了,代码业务错误 点击按钮就停止运行 bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent1=new Intent(MainActivity.this,actionActivity.class); startActivity(intent1); } }); 上面是点击跳转 下面是跳转后的界面代码 package com.example.denglujiemian; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import android.os.Bundle; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import java.io.FileInputStream; public class actionActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_action); ImageView imageView1=(ImageView) findViewById(R.id.xl); ImageView imageView2=(ImageView) findViewById(R.id.lt); ImageView imageView3=(ImageView) findViewById(R.id.hy); ImageView imageView4=(ImageView) findViewById(R.id.wd); imageView1.setOnClickListener(l); imageView2.setOnClickListener(l); imageView3.setOnClickListener(l); imageView4.setOnClickListener(l); } View.OnClickListener l=new View.OnClickListener() { @Override public void onClick(View v) { FragmentManager fragmentManager=getSupportFragmentManager(); FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction(); Fragment fxian=null; switch (v.getId()){ case R.id.xl: fxian=new keep_Fragment(); break; case R.id.lt: fxian=new liaotianfrag_Fragment(); break; case R.id.hy: fxian=new haoyou_Fragment(); break; case R.id.wd: fxian=new shezhi_Fragment(); break; default: break; } fragmentTransaction.replace(R.id.frameyongqi,fxian); fragmentTransaction.commit(); } };
Android开发,从Fragment中跳转到其他Activity后只显示空白的活动
准备实现的功能是点击售后服务后跳转到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){ Intent intent = new Intent(getActivity(), Guarantee.class); startActivity(intent);``` Guarantee.class的代码如下 ```public class Guarantee extends AppCompatActivity { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreate(savedInstanceState); View view = inflater.inflate(R.layout.activity_guarantee, container, false); //setContentView(R.layout.activity_guarantee); return view; } }``` ![图片说明](https://img-ask.csdn.net/upload/201802/13/1518520811_463526.png) ![图片说明](https://img-ask.csdn.net/upload/201802/13/1518520821_886623.png)
Android——Activity和Fragment 的相关问题
错误内容 ``` java.lang.RuntimeException: Unable to start activity ComponentInfo{com.esen.aixiaobao/com.esen.aixiaobao.application.news.activity.NewsMainActivity}: android.view.InflateException: Binary XML file line #81: Error inflating class fragment at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2344) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) at android.app.ActivityThread.access$600(ActivityThread.java:163) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1365) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5398) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(Native Method) Caused by: android.view.InflateException: Binary XML file line #81: Error inflating class fragment at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:396) at android.view.LayoutInflater.inflate(LayoutInflater.java:352) at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:281) at android.app.Activity.setContentView(Activity.java:1889) at com.esen.aixiaobao.application.news.activity.NewsMainActivity.onCreate(NewsMainActivity.java:26) ``` Activity部分代码 ``` public class NewsMainActivity extends FragmentActivity { private Fragment[] fragments; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_fragment_news); FragmentNews fragment = new FragmentNews(); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_news, fragment).commit(); fragments = new Fragment[2]; fragments[0] = getSupportFragmentManager().findFragmentById(R.id.fragment_news); fragments[1] = getSupportFragmentManager().findFragmentById(R.id.fragment_focus); getSupportFragmentManager().beginTransaction(). hide(fragments[1]).show(fragments[0]).commit(); } ``` Fragment 相关代码 ``` public class FragmentNews extends Fragment{ private FragmentActivity activity; private MyListView listView; private NewsListViewAdapter adapter; private List<News> newses; //当前页数 private int pageNow = 0; //判断是否加载更多 private boolean isLoading =false; public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){ View view = inflater.inflate(R.layout.fragment_news,container,false); return view; } ``` 代码目的,我是想从一个activity(one)跳转到另一个activity(two)上,但是我的 activity(two)是继承FragmentActivity的。 Fragment才是主要显示页面。 ``` public void onClick(View view) { switch (view.getId()) { case R.id.home_family_textview_icon_notify: Intent intent = new Intent(getActivity(), NewsMainActivity.class); startActivity(intent); break; ```
Android 两个activity之间跳转不刷新怎么实现
两个activity中布局类似,都有两个listview,listview可以点击,我现在设置的是两个一样的xml,两个类似的activity 用intent进行跳转,但这样切换会重新刷新,如何实现不刷新切换。请大神细讲 !!! 之前想用Fragment的方法 来隐藏添加控件 但是由于自己不太懂 一个类既要继承Fragment又要继承activity 不能解决 所以被搁置了 并且这个方法需要改动很多 太麻烦 我看到有些帖子有说能用按钮实现控件隐藏显示的 求教!
改变了AndroidMainfest文件的主活动之后页面的按钮就不会跳转了?
/这是有跳转按钮的页面类 public class TabOneActivity extends Activity{ private Button mSchoolBtn; private Button mDepartmentBtn; private Button mMajorBtn; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.tab01); mSchoolBtn = (Button) findViewById(R.id.btn_school); mSchoolBtn.setOnClickListener(new OnClickListener(){ public void onClick(View v){ Intent intent01 = new Intent(TabOneActivity.this,SchoolIntroduceActivity.class); startActivity(intent01); } }); mDepartmentBtn = (Button) findViewById(R.id.btn_department); mDepartmentBtn.setOnClickListener(new OnClickListener(){ public void onClick(View v){ Intent intent02 = new Intent(TabOneActivity.this,DepartmentIntroduceActivity.class); startActivity(intent02); } }); mMajorBtn = (Button) findViewById(R.id.btn_major); mMajorBtn.setOnClickListener(new OnClickListener(){ public void onClick(View v){ Intent intent03 = new Intent(TabOneActivity.this,MajorIntroduceActivity.class); startActivity(intent03); } }); } } //这样设置上面的页面不可以跳转 <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.tianyu.MainActivity" android:label="@string/app_name" > </activity> <activity android:name=".LoginActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".LogonActivity"></activity> <activity android:name=".SchoolIntroduceActivity"></activity> <activity android:name=".DepartmentIntroduceActivity"></activity> <activity android:name=".MajorIntroduceActivity"></activity> <activity android:name=".TabOneActivity"></activity> </application> //这样设置上面的页面能实现跳转 <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.tianyu.MainActivity" android:label="@string/app_name" > </activity> <activity android:name=".LoginActivity"></activity> <activity android:name=".LogonActivity"></activity> <activity android:name=".SchoolIntroduceActivity"></activity> <activity android:name=".DepartmentIntroduceActivity"></activity> <activity android:name=".MajorIntroduceActivity"></activity> <activity android:name=".TabOneActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity> </application> 为什么改变了AndroidMainfest.xml文件的主活动之后页面的按钮就不会跳转了?而直接以该页面作主活动页面就可以 备注:有跳转的那个页面用了一个Fragment实现Tab页面之间的切换,是跟这个有关系吗?请指教。。
安卓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和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(); } } }); } } ```
一个fragment跳转到其它fragment,其它fragment变成了空白页
MainActivity里面有三个fragment的样子,但是呢当我第一个fragment制作了获取新闻功能之后,其它fragment都变成了空白页,请高手指点一下下,谢啦!! 新闻fragment: ![新闻fragment](https://img-ask.csdn.net/upload/201603/04/1457105975_146181.png) 其它fragment: ![其它fragment](https://img-ask.csdn.net/upload/201603/04/1457105997_344946.png) MainActivity: import net.loonggg.fragment.R; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.Window; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; public class MainActivity extends FragmentActivity { private Fragment[] mFragments; private RadioGroup bottomRg; private FragmentManager fragmentManager; private FragmentTransaction fragmentTransaction; private RadioButton rbOne, rbTwo, rbThree; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); mFragments = new Fragment[3]; fragmentManager = getSupportFragmentManager(); mFragments[0] = fragmentManager.findFragmentById(R.id.fragement_main); mFragments[1] = fragmentManager.findFragmentById(R.id.fragement_bbs); mFragments[2] = fragmentManager.findFragmentById(R.id.fragement_setting); fragmentTransaction = fragmentManager.beginTransaction() .hide(mFragments[0]).hide(mFragments[1]).hide(mFragments[2]); fragmentTransaction.show(mFragments[0]).commit(); setFragmentIndicator(); } private void setFragmentIndicator() { bottomRg = (RadioGroup) findViewById(R.id.bottomRg); rbOne = (RadioButton) findViewById(R.id.rbOne); rbTwo = (RadioButton) findViewById(R.id.rbTwo); rbThree = (RadioButton) findViewById(R.id.rbThree); bottomRg.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { fragmentTransaction = fragmentManager.beginTransaction() .hide(mFragments[0]).hide(mFragments[1]) .hide(mFragments[2]); switch (checkedId) { case R.id.rbOne: fragmentTransaction.show(mFragments[0]).commit(); break; case R.id.rbTwo: fragmentTransaction.show(mFragments[1]).commit(); break; case R.id.rbThree: fragmentTransaction.show(mFragments[2]).commit(); break; default: break; } } }); } } 显示新闻的fragment: import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import com.askdoctor.adapter.NewsAdapter; import com.askdoctor.constans.Constant; import com.askdoctor.entity.News; import com.askdoctor.utils.HttpUtils; import net.loonggg.fragment.R; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; public class FragmentMain extends Fragment { private NewsAdapter adapter; private List<News> newsList; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_main, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); ListView listNews = (ListView)getView().findViewById(R.id.list_web_view); newsList=new ArrayList<News>(); adapter = new NewsAdapter(getActivity(),newsList); listNews.setAdapter(adapter); HttpUtils.getNewsJSON(Constant.URL_GET_NEWS_LIST, getNewsHandler); } public Handler getNewsHandler=new Handler(){ public void handleMessage(android.os.Message msg){ String jsonData=(String)msg.obj; System.out.println(jsonData); try { JSONArray jsonArray=new JSONArray(jsonData); for (int i = 0; i < jsonArray.length(); i++) { org.json.JSONObject object = jsonArray.getJSONObject(i); String title=object.getString("title"); String desc=object.getString("desc"); String time=object.getString("time"); String content_url=object.getString("content_url"); String pic_url=object.getString("pic_url"); newsList.add(new News(title, desc, time, content_url, pic_url)); } //数据变化后更新adapter adapter.notifyDataSetChanged(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } }; }; } 变成空白页的fragment: import net.loonggg.fragment.R; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; public class FragmentBBS extends Fragment { Button btnSendBBS; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_bbs, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); btnSendBBS=(Button)getView().findViewById(R.id.btn_jump_submit); initview(); } private void initview() { btnSendBBS.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent=new Intent(getActivity(),MakeBBS.class); startActivity(intent); } }); } @Override public void onPause() { super.onPause(); } } ``` ``` 这是logcat: 03-03 20:26:52.056: E/memtrack(3342): Couldn't load memtrack module (No such file or directory) 03-03 20:26:52.056: E/android.os.Debug(3342): failed to load memtrack module: -2 03-03 20:26:52.756: E/InputDispatcher(372): channel '4a9f03c8 net.loonggg.fragment/com.askdoctor.ui.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 03-03 20:26:54.940: E/Icing(685): Error initializing, resetting corpora: Could not create native index 03-03 20:26:55.240: E/Icing(685): Internal init failed 03-03 20:26:55.240: E/Icing(685): Couldn't handle android.intent.action.PACKAGE_REMOVED intent due to initialization failure. 03-03 20:26:55.240: E/Icing(685): Couldn't handle android.intent.action.PACKAGE_ADDED intent due to initialization failure. 03-03 20:26:55.244: E/Icing(685): Couldn't handle android.intent.action.PACKAGE_REPLACED intent due to initialization failure. 03-03 20:26:57.100: E/memtrack(3367): Couldn't load memtrack module (No such file or directory) 03-03 20:26:57.100: E/android.os.Debug(3367): failed to load memtrack module: -2 03-03 20:26:57.944: E/memtrack(3388): Couldn't load memtrack module (No such file or directory) 03-03 20:26:57.944: E/android.os.Debug(3388): failed to load memtrack module: -2 03-03 20:32:09.552: E/CheckinTask(685): Checkin failed: https://android.clients.google.com/checkin (request #0): org.apache.http.conn.ConnectTimeoutException: Connect to /74.125.23.138:443 timed out 03-03 20:35:50.196: E/BandwidthController(138): Updating quota globalAlert failed (No such file or directory) 再次谢谢各位啦!!!
跳转到新的ACTIVITY,tabhost当前选项卡显示为空
跳转到新的ACTIVITY,新的Activity采用的是FRAGMENT+TABHOST,跳转后当前的tabcontent内容为空,但是在新的Activity选项卡切换下,tabcontent的内容就又能显示了!! 问题就是跳转后,首次的tabcontent不显示!大家有谁遇到过这样的问题吗? 补充下code: **前一个Activity, R.id.fragment_tab1 是用的Listfragment** tabHost = (TabHost) findViewById(android.R.id.tabhost); tabHost.setup(); tabHost.addTab( tabHost.newTabSpec(main_home) .setIndicator(main_home) .setContent(R.id.fragment_tab1) ); tabHost.setCurrentTab(0); ------------------------------------------------------------------------ R.id.fragment_tab1 里的setOnItemClickListener()方法,是将当前list的item项放在通过intent传递到 ,需要启动的新的Activity中/ ------------------------------------------------------------------------ protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.showcontain); ProgressRefresh(); } private void ProgressRefresh(){ contextTask = new ContextTask(0); TaskHost taskHost = new TaskHost(){ @Override public void onPreExecute(int requestCode) { // TODO Auto-generated method stub super.onPreExecute(requestCode); } }; contextTask.setTaskHost(taskHost); contextTask.setProgress(new SimpleDialogProgress(this, "加载LIST", "正在加载中...")); InitUI(); contextTask.execute(); } private void InitUI(){ getIntentExtra(); TextView txt = (TextView)findViewById(R.id.text_cjq); txt.setText(texts); InitTabHost(); InitClickListener(); } private void InitTabHost(){ TabHost.TabSpec spec; //tabHost = getTabHost(); tabHost = (TabHost) findViewById(android.R.id.tabhost); tabHost.setup(); // ............. spec=tabHost.newTabSpec("Refresh").setIndicator("Refresh").setContent(R.id.tab0); tabHost.addTab(spec); spec=tabHost.newTabSpec("Love").setIndicator("Love").setContent(R.id.tab1); tabHost.addTab(spec); spec=tabHost.newTabSpec("Comment").setIndicator("Comment").setContent(R.id.tab2); tabHost.addTab(spec); spec=tabHost.newTabSpec("Onward").setIndicator("Onward").setContent(R.id.tab2); tabHost.addTab(spec); spec=tabHost.newTabSpec("Goback").setIndicator("Goback").setContent(R.id.tab1); tabHost.addTab(spec); tabHost.setCurrentTab(0); } private void InitClickListener(){ RadioGroup radioGroup=(RadioGroup) this.findViewById(R.id.main_tab); radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // TODO Auto-generated method stub switch (checkedId) { case R.id.main_tab_addHome: tabHost.setCurrentTabByTag("Refresh"); break; case R.id.main_tab_addExam: tabHost.setCurrentTabByTag("Love"); break; case R.id.main_tab_myExam: tabHost.setCurrentTabByTag("Comment"); break; case R.id.main_tab_message: tabHost.setCurrentTabByTag("Onward"); break; case R.id.main_tab_settings: tabHost.setCurrentTabByTag("Goback"); break; default: tabHost.setCurrentTabByTag("Refresh"); break; } } }); } private void getIntentExtra(){ Intent intent = getIntent(); title = intent.getExtras().getString("title"); texts = intent.getExtras().getString("texts"); resID = intent.getExtras().getInt("resIds"); }
还是来请教大牛吧,关于activity传数据到fragment中的问题
我有一个MainActivity,里面有三个fragment,然后第三个fragment中有登录按钮跳转到LoginMainActivity,我想要实现当点击LoginActivity中的登录按钮返回,并且把LoginActivity中的name传到Fragment中的TextView; 下面是MainAtivity中Fragment的代码 package textview.exam; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; public class FragmentMe extends Fragment{ protected String result; Button loginbutton; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // TODO Auto-generated method stub View view=inflater.inflate(R.layout.main_me,container,false); loginbutton=(Button)view.findViewById(R.id.login); loginbutton.setOnClickListener(startLoginListener); return view; } View.OnClickListener startLoginListener=new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(getActivity(), LoginActivity.class); startActivity(intent); getActivity().overridePendingTransition(R.anim.push_down_in, R.anim.push_down_out); } }; } 下面是LoginActivity的代码 package textview.exam; import android.app.ActionBar; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import java.util.ArrayList; import java.util.List; public class LoginActivity extends Activity { Button okbutton; String name; String pass; HttpClient httpClient; Handler handler = new Handler() { public void handleMessage(Message msg) { if(msg.what == 0x123) { } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); final ActionBar actionBar = getActionBar(); actionBar.hide(); httpClient=new DefaultHttpClient(); okbutton=(Button)findViewById(R.id.ok); okbutton.setOnClickListener(loginokListener); Button loginback=(Button)findViewById(R.id.backlogin); loginback.setOnClickListener(backloginListener); } View.OnClickListener backloginListener=new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }; View.OnClickListener loginokListener=new View.OnClickListener() { @Override public void onClick(View v) { // 获取用户输入的用户名、密码 name = ((EditText)findViewById(R.id.login_name)).getText().toString(); pass = ((EditText)findViewById(R.id.login_password)).getText().toString(); new Thread() { @Override public void run() { try { HttpPost post = new HttpPost("http://192.168.100.101:8080/foo/login.jsp");//③ // 如果传递参数个数比较多,可以对传递的参数进行封装 List<NameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair ("name", name)); params.add(new BasicNameValuePair ("pass", pass)); // 设置请求参数 post.setEntity(new UrlEncodedFormEntity( params, HTTP.UTF_8)); // 发送POST请求 HttpResponse response = httpClient.execute(post); //④ // 如果服务器成功地返回响应 if (response.getStatusLine() .getStatusCode() == 200) { String msg = EntityUtils .toString(response.getEntity()); Log.i("wolaoadmasmdas"+msg,""); Looper.prepare(); Toast.makeText(LoginActivity.this, msg, Toast.LENGTH_LONG).show(); Looper.loop(); } } catch (Exception e) { e.printStackTrace(); } } }.start(); } }; //返回动画 protected void onPause() { super.onPause(); overridePendingTransition(R.anim.in_from_down, R.anim.out_to_up); } }
startservice之后onstartcommand却没有启动
mainactivity代码 package com.example.test_01; //import android.R; import java.util.List; import com.example.service.PlayerService; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.ImageButton; public class MainActivity extends ActionBarActivity implements MainFragment.OnMainFragmentInteractionListener, MyMusicFragment.OnMyMusicFragmentInteractionListener { //记录当前播放器的状态 private boolean isPause; private FragmentManager fragmentManager; private FragmentTransaction fragmentTransaction; private MainFragment mainFragment; private MyMusicFragment myMusicFragment; //查找歌曲的类 private FindSongs finder; //歌曲列表 public static List<Mp3Info> mp3Infos; //音乐的位置 public static int music_position; //播放按钮控件 private ImageButton play_button; /* 这个方法是activity和fragment通信的一种方法 在MainFragment中调用这个方法,可以在activity中做出相应的反应 */ public void onMainFragmentInteraction(int msg){ /* 对其中的参数msg做出判断,如果为CHANGE_TO_MY_MUSIC_FRAGMENT 则执行跳转 */ if(msg == AppConstant.PlayerMsg.CHANGE_TO_MY_MUSIC_FRAGMENT){ /* 在这里并没有直接切换Fragment 而是调用了activity实现MyMusicFragment的那个接口 对后面的开发能带来一点便利之处 */ onMyMusicFragmentInteraction (AppConstant.PlayerMsg.CHANGE_TO_MY_MUSIC_FRAGMENT); } } public void onMyMusicFragmentInteraction(int msg){ myMusicFragment = new MyMusicFragment(MainActivity.this); //创建了MyMusicFragment的实例 FragmentManager fragmentManager = getFragmentManager(); //得到FragmentManager FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); //得到fragmentTransaction if(msg == AppConstant.PlayerMsg.CHANGE_TO_MY_MUSIC_FRAGMENT){ fragmentTransaction.replace(R.id.fragment_layout, myMusicFragment); fragmentTransaction.addToBackStack(null); //这句话是将被替换的MainFragment加入到一个专门存放fragment的栈中,在回退的时候显示上一个Fragment fragmentTransaction.commit(); } if(msg == AppConstant.PlayerMsg.BACK_TO_MAIN_FRAGMENT){ fragmentTransaction.replace(R.id.fragment_layout, mainFragment); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); } } public void onMyMusicFragmentInteraction(int msg,int position){ if(msg == AppConstant.PlayerMsg.LIST_CLICK){ if (mp3Infos != null) { // Log.i("dada", "-------------here------------"); isPause = false; initService(position); } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); music_position = 0; finder = new FindSongs(); mp3Infos = finder.getMp3Infos(getContentResolver()); play_button = (ImageButton)findViewById(R.id.play_button); //mainFragment = new MainFragment(); //创建了刚才定义的MainFragment实例 mainFragment = new MainFragment(MainActivity.this); fragmentManager = getFragmentManager(); //得到FragmentManager fragmentTransaction = fragmentManager.beginTransaction(); //得到fragmentTransaction,用于管理fragment的切换 fragmentTransaction.replace(R.id.fragment_layout, mainFragment).commit(); //将MainActivity里的布局模块fragment_layout替换为mainFragment } @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); } private void initService(int position) { music_position = position; Mp3Info mp3Info = mp3Infos.get(position); /* 这里新建了一个Intent 里面存放各种即将传给Service的数据 要启动自定义PlayerService类 还需要在AndroidManifest中加入如下代码 <service android:name="com.example.dada.myapplication.PlayerService" android:exported="false" > </service> */ //Intent intent = new Intent("com.example.service.PlayerService"); Intent intent = new Intent(MainActivity.this, PlayerService.class); play_button.setImageResource(R.drawable.play_pause); intent.putExtra("url", mp3Info.getUrl()); intent.putExtra("title", mp3Info.getTitle()); intent.putExtra("artist", mp3Info.getArtist()); intent.putExtra("album", mp3Info.getAlbum()); intent.putExtra("album_id", mp3Info.getAlbum_id()); intent.putExtra("MSG", AppConstant.PlayerMsg.PLAY_MSG); intent.setClass(MainActivity.this, PlayerService.class); startService(intent); Log.w("dada", "------------hahaha----------"); } //@Override // public void onFragmentInteraction(int msg) { // // TODO Auto-generated method stub // // } } service代码 package com.example.service; import java.io.IOException; import com.example.test_01.AppConstant; import com.example.test_01.AppConstant.PlayerMsg; import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.os.IBinder; import android.util.Log; public class PlayerService extends Service implements AppConstant { public static MediaPlayer mediaPlayer = null; private int current_position; private String musicPath; private String music_artist; private String music_title; private String notification_msg; //private MediaPlayer mediaPlayer; @Override public IBinder onBind(Intent intent) { Log.w("dada", "-------------here------------"); return null; } /* * onStartCommand()方法就是刚启动service时调用的一个方法 * 里面第一个参数intent就是在activity中的那个intent * 因此里面包含着被点击的歌曲相关信息 */ @Override public int onStartCommand(Intent intent, int flags, int startId) { //MediaPlayer是android中自带的一个播放器类,直接实例化后使用即可 mediaPlayer = new MediaPlayer(); Log.w("dada", "-------------here------------"); try { int msg = intent.getIntExtra("MSG", 0); musicPath = intent.getStringExtra("url"); //从intent中拿出歌曲的路径 Log.w("dada", "-------------here------------"); if (msg == AppConstant.PlayerMsg.PLAY_MSG) { playMusic(0); } } catch (Exception e) { e.printStackTrace(); } return 0; } private void playMusic(int position) { Log.w("dada", "-------------here------------"); try { mediaPlayer.reset(); mediaPlayer.setDataSource(musicPath); mediaPlayer.prepare(); mediaPlayer.setOnPreparedListener(new MyPreparedListener(position)); } catch (IOException e) { e.printStackTrace(); } } private class MyPreparedListener implements MediaPlayer.OnPreparedListener { private int position; public MyPreparedListener(int position) { this.position = position; } public void onPrepared(MediaPlayer mp) { if (position > 0) Log.i("dada", "-------------here------------"); mediaPlayer.seekTo(position); mediaPlayer.start(); } } private void stopMusic() { if (mediaPlayer != null) { mediaPlayer.pause(); } } public void onDestory() { Log.e("dada", "-------------here------------"); if (mediaPlayer != null) { mediaPlayer.stop(); mediaPlayer.release(); } } } startService(intent);后面的log显示了,但是service却没有反应
安卓开发,如何解决在片段的片段里调用相册选取图片不显示的问题
情况分析: 使用menudrawer这个第三方来建一个主页,实现左边出现菜单栏,点击后跳转到不同片段Fragment的功能。如图,其中有个片段--相册。 ![图片说明](https://img-ask.csdn.net/upload/201501/21/1421823568_793936.jpg) 这个片段用的是android.support.v4.app.FragmentTabHost这个控件,具体如下: <android.support.v4.app.FragmentTabHost android:id="@+id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:focusable="false" android:orientation="horizontal" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0" /> <FrameLayout android:id="@+id/realtabcontent" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> </android.support.v4.app.FragmentTabHost> 在这个片段里又添加了两个片段——片段1和片段2,如图: ![图片说明](https://img-ask.csdn.net/upload/201501/21/1421823585_347980.jpg) 我现在的问题就是在片段1里,点击 按钮去相册中选择一张照片后,准备显示在ImageView上,但是不能成功显示,或者说根本就不显示选择的那张照片! 在片段一里调用相册的代码是: Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intent, CODE_BOOK); //CODE_BOOK 是一个Int类型的值,做判断用,这里没多大意义 在onActivityResult方法里获取这张照片,就在这个环节里出显示不出来的问题,代码是: super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { if (requestCode == CODE_BOOK) { Uri originalUri = data.getData(); //获得图片的uri try { Bitmap bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); mylogos.setImageBitmap(bm); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 遇到这样的问题,网上搜索也不知道怎么搜索,查出问题的关节了,在包含这些片段的Activity里的onActivityResult()方法里能够获取到选择相册里的照片的路径,可是在对应的片段里却无法获取到选择的照片的路径,请教谁有有什么解决思路吗?
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优化之路!
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
使用 Docker 部署 Spring Boot 项目
Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。首先构建一个简单的 S...
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
白话阿里巴巴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 进程负责处...
“狗屁不通文章生成器”登顶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 参考博客
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
Android 9.0 init 启动流程
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、启动流程概述一、 启动流程概述Android启动流程跟Linux启动类似,大致分为如下五个阶段。1.开机上电,加载固化的ROM。2.加载BootLoader,拉起Android OS。3.加载Uboot,初始外设,引导Kernel启动等。...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车?某胡同口的煎饼摊一年能卖出多少个煎饼?深圳有多少个产品经理?一辆公交车里能装下多少个乒乓球?一个正常成年人有多少根头发?这类估算问题,被称为费米问题,是以科学家费米命名的。为什么面试会问这种问题呢?这类问题能把两类人清楚地区分出来。一类是具有文科思维的人,擅长赞叹和模糊想象,它主要依靠的是人的第一反应和直觉,比如小孩...
前后端分离,我怎么就选择了 Spring Boot + Vue 技术栈?
前两天又有小伙伴私信松哥,问题还是职业规划,Java 技术栈路线这种,实际上对于这一类问题我经常不太敢回答,每个人的情况都不太一样,而小伙伴也很少详细介绍自己的情况,大都是一两句话就把问题抛出来了,啥情况都不了解,就要指出一个方向,这实在是太难了。 因此今天我想从我学习 Spring Boot + Vue 这套技术栈的角度,来和大家聊一聊没有人指导,我是如何一步一步建立起自己的技术体系的。 线上大...
17张图带你解析红黑树的原理!保证你能看懂!
二叉查找树 由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 若任意结点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任意结点的...
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问