这是扩展FragmentActivity的类文件。我不太确定我是否做得对。我想有一个选项卡式布局在这个活动,但应用程序不断崩溃。
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_booking);
viewPager = (ViewPager)findViewById(R.id.viewPager);
viewPager.setAdapter(new CustomAdapter(getSupportFragmentManager(), getApplicationContext()));
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener(){
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
});
}
private class CustomAdapter extends FragmentPagerAdapter {
private String fragments [] = {"A","B"};
public CustomAdapter(FragmentManager supportFragmentManager, Context applicationContext) {
super(supportFragmentManager);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0: return new fragment1();
case 1: return new fragment2();
default:return null;
}
}
@Override
public int getCount() {
return fragments.length;
}
@Override
public CharSequence getPageTitle(int position) {
return fragments[position];
}
}
When I pass an intent from the AsynTask like so
Intent intent;
intent = new Intent(m_context, booking.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
m_context.startActivity(intent);```
My app builds but crashes with the error> Error inflating class android.support.v7.widget.ScrollingTabContainerView.TabView
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释
* > 02-23 16:54:11.061 14404-14404/com.example.application\_name E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.application\_name, PID: 14404 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.application\_name/com.example.application\_name.booking}: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.v7.widget.ScrollingTabContainerView.TabView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2198) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) at android.app.ActivityThread.access$800(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5086) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.v7.widget.ScrollingTabContainerView.TabView at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707) at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) at android.view.LayoutInflater.inflate(LayoutInflater.java:492) at android.view.LayoutInflater.inflate(LayoutInflater.java:397) at android.view.LayoutInflater.inflate(LayoutInflater.java:353) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:256) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109) at com.example.webook.webook.booking.onCreate(booking.java:29) at android.app.Activity.performCreate(Activity.java:5248) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) at android.app.ActivityThread.access$800(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5086) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.widget.ScrollingTabContainerView.TabView" on path: DexPathList[[zip file "/data/app/com.example.webook.webook-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.webook.webook-2, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:457) at android.view.LayoutInflater.createView(LayoutInflater.java:559) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) at android.view.LayoutInflater.inflate(LayoutInflater.java:492) at android.view.LayoutInflater.inflate(LayoutInflater.java:397) at android.view.LayoutInflater.inflate(LayoutInflater.java:353) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:256) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109) at com.example.webook.webook.booking.onCreate(booking.java:29) at android.app.Activity.performCreate(Activity.java:5248) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) at android.app.ActivityThread.access$800(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5086) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method)```
*/
>
This is my Asyntask
```javascript包装com.example.webook.webook;
进口android.content.Context;
进口android.content.Intent;
进口android.net.Uri;
进口android.os.Looper;
进口android.util.Log;
进口android.widget.Toast;
进口com.android.volley.Request;
进口com.android.volley.RequestQueue;
进口com.android.volley.Response;
进口com.android.volley.VolleyError;
进口com.android.volley.toolbox.JsonArrayRequest;
进口com.android.volley.toolbox.JsonObjectRequest;
进口com.android.volley.toolbox.JsonRequest;
进口com.android.volley.toolbox.StringRequest;
进口com.android.volley.toolbox.Volley;
导入com.google.android.gms.gcm.GoogleCloudMessaging;
进口org.json.JSONObject;
进口java.util.HashMap;
进口java.util.Map;
/**
Context m_context;String m_name,m_email,m_password;public LoginAsyncTask(Context context, String email, String pasword){ m_context = context; m_email=email; m_password=pasword;}@Overrideprotected String doInBackground(String... params) { Looper.prepare(); try{ final RequestQueue queue = Volley.newRequestQueue(m_context); JSONObject js = new JSONObject(); try { JSONObject jsonobject_one = new JSONObject(); JSONObject jsonobject = new JSONObject(); jsonobject.put("csrf_token", ""); js.put("params", jsonobject); }catch (Exception e) { e.printStackTrace(); } //https://webook.trabacus.com/webook/csrf_token JsonObjectRequest jsonObjReq = new JsonObjectRequest( Request.Method.POST,"https://webook.trabacus.com/webook/csrf_token", js, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) {// Log.d("tagd",response.result.csrf_token());
try{ JSONObject ob=response.getJSONObject("result"); String csrf=ob.getString("csrf_token"); //rid,csrf,name,email,password JSONObject js = new JSONObject(); try { JSONObject jsonobject = new JSONObject(); jsonobject.put("csrf_token",csrf); jsonobject.put("login",m_email); jsonobject.put("password",m_password); jsonobject.put("db","Odoo-9"); js.put("params", jsonobject); JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST, "https://webook.trabacus.com/webook/login", js, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d("tagd", response.toString()); Intent intent; intent = new Intent(m_context, booking.class); //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); m_context.startActivity(intent); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.d("tagd",error.toString()); } }){ @Override public Map<String, String> getHeaders(){ HashMap<String,String> headers=new HashMap<>(); headers.put("Content-Type","application/json; charset=utf-8"); return headers; } }; queue.add(jsonObjReq); }catch (Exception e) { e.printStackTrace(); } Log.d("tagd",ob.getString("csrf_token")); }catch (Exception e){ }// msgResponse.setText(response.toString());
// hideProgressDialog();
} }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.d("tagd", "Error: " + error.getMessage());// hideProgressDialog();
} }) { /** * Passing some request headers
*/
@Override
public Map<String, String> getHeaders() {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
};
queue.add(jsonObjReq);// StringRequest sr =新StringRequest(Request.Method.POST,"https://webook.trabacus.com/webook/csrf_token",新Response.Listener()“){
// @覆盖
// public void onResponse(字符串响应){
// Log.d("tagd",答复);
// }
// },新Response.ErrorListener() {
// @覆盖
//公共空onErrorResponse(VolleyError错误){
// Toast.makeText(m_context,error.toString(),Toast.LENGTH_LONG).show();
// }
// }{
// @覆盖
//受保护Map getParams(){
// Map params =新HashMap();
// params.put("csrf_token“、"");
//返回params;
// }
//
// @覆盖
// public Map getHeaders(){
// Map params =新HashMap();
// params.put(“内容-类型”、“应用程序/x-www-form-urlencoded”);
//返回params;
// }
// };
// queue.add();
}catch (Exception e){ Toast.makeText(m_context,e.toString(),Toast.LENGTH_LONG).show(); } return null;}}
发布于 2016-02-23 11:53:06
doInBackground在非ui线程中运行.您不能在这里执行ui操作。
或者在onPostExecute方法中的push活动操作中使用此方法
或使用以下方法
runOnUiThread (new Thread(new Runnable() {
public void run() {
Intent intent= new Intent(m_context, booking.class);
m_context.startActivity(intent);
}
}));https://stackoverflow.com/questions/35575535
复制相似问题