Android 我的应用程序没有';平板电脑上什么也看不出来
我的应用程序在移动设备上运行得非常完美,但当我尝试在平板电脑上运行时,它不会显示任何错误,而是在Genymotion Emulator(谷歌Nexus 9)上运行。Android 我的应用程序没有';平板电脑上什么也看不出来,android,responsive-design,tablet,Android,Responsive Design,Tablet,我的应用程序在移动设备上运行得非常完美,但当我尝试在平板电脑上运行时,它不会显示任何错误,而是在Genymotion Emulator(谷歌Nexus 9)上运行。 我将在这里发布我的日志、代码和Xml_布局 这也会出现在我的事件日志中 12:17:25 PM Can't bind to local 8636 for debugger 12:17:28 PM An established connection was aborted by the software in your host ma
我将在这里发布我的日志、代码和Xml_布局 这也会出现在我的事件日志中
12:17:25 PM Can't bind to local 8636 for debugger
12:17:28 PM An established connection was aborted by the software in your host machine
java.io.IOException: An established connection was aborted by the software in your host machine
修甲师
<?xml version="1.0" encoding="utf-8"?>
主要活动
public class MainActivity extends AppCompatActivity {
public static final String popluar = "popularity.desc";
public static final String top_rate = "vote_average.desc";
public static Context context;
public static ArrayList<Movie> movies = new ArrayList<>();
public static FragmentManager fm;
public static Configuration config;
public static String id;
public static String title;
public static String releaseDate;
public static String overView;
public static String voteAverage;
public static String popularity;
public static String poster;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
context = MainActivity.this;
fm = getSupportFragmentManager();
config = getResources().getConfiguration();
ReplaceFragments(popluar);
}
public static boolean isTablet() {
if (config.smallestScreenWidthDp >= 600) {
return true;
}else {
return false;
}
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.most_popular) {
ReplaceFragments(popluar);
return true;
}
if (id == R.id.highest_rated) {
ReplaceFragments(top_rate);
return true;
}
if (id == R.id.favorite) {
ReplaceFragments("fav");
return true;
}
return super.onOptionsItemSelected(item);
}
private void ReplaceFragments(String SortBy) {
if (isTablet()){
MainFragment mainFragment = MainFragment.newInstance(SortBy);
getSupportFragmentManager().beginTransaction().replace(R.id.tabletMain, mainFragment)
.commit();
}else{
MainFragment mainFragment = MainFragment.newInstance(SortBy);
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentMain, mainFragment)
.commit();
}
}
public static void showDetails(int position) {
id = movies.get(position).getId();
title = movies.get(position).getTitle();
releaseDate = movies.get(position).getReleaseDate();
overView = movies.get(position).getOverView();
voteAverage = movies.get(position).getVoteAverage();
popularity = movies.get(position).getPopularity();
poster = movies.get(position).getLargePoster();
if (isTablet()) {
DetailFragment detailFragment = new DetailFragment();
fm.beginTransaction().replace(R.id.tabletDetail, detailFragment)
.commit();
} else {
Intent intent = new Intent(context, DetailedActivity.class);
context.startActivity(intent);
}
}
}
public类MainActivity扩展了AppCompatActivity{
公共静态最终字符串popluar=“popularity.desc”;
公共静态最终字符串top\u rate=“vote\u average.desc”;
公共静态语境;
public static ArrayList movies=new ArrayList();
公共静态碎片管理器fm;
公共静态配置;
公共静态字符串id;
公共静态字符串标题;
公共静态字符串releaseDate;
公共静态字符串概述;
公共静态字符串平均值;
公共静态字符串流行;
公共静态字符串海报;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
context=MainActivity.this;
fm=getSupportFragmentManager();
config=getResources().getConfiguration();
替换片段(popluar);
}
公共静态布尔值isTablet(){
如果(config.smallestScreenWidthDp>=600){
返回true;
}否则{
返回false;
}
}
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.most_popular){
替换片段(popluar);
返回true;
}
如果(id==R.id.最高额定值){
更换碎片(最高价格);
返回true;
}
if(id==R.id.favorite){
替换碎片(“fav”);
返回true;
}
返回super.onOptionsItemSelected(项目);
}
私有void ReplaceFragments(字符串排序){
if(isTablet()){
MainFragment MainFragment=MainFragment.newInstance(排序);
getSupportFragmentManager().beginTransaction().replace(R.id.tabletMain,mainFragment)
.commit();
}否则{
MainFragment MainFragment=MainFragment.newInstance(排序);
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentMain,mainFragment)
.commit();
}
}
公共静态无效显示详细信息(内部位置){
id=movies.get(position.getId();
title=movies.get(position.getTitle();
releaseDate=movies.get(position.getReleaseDate();
overView=movies.get(position.getOverView();
voteAverage=movies.get(position.getVoteAverage();
流行度=电影。get(position)。GetPosition();
poster=movies.get(position.getLargePoster();
if(isTablet()){
DetailFragment DetailFragment=新的DetailFragment();
fm.beginTransaction().replace(R.id.tabletDetail,detailFragment)
.commit();
}否则{
意向意向=新意向(上下文,DetailedActivity.class);
背景。开始触觉(意图);
}
}
}
主要片段
public class MainFragment extends Fragment {
public final static String API_KEY = "b932ba435fc93a5944938fe9d44cd198";
public final String BASE_URL = "http://api.themoviedb.org/3/discover/movie?sort_by=&api_key=";
movieAdapter adapter;
movieAdapter DbAdapter;
GridView gridview;
DbOpenHelper dbOpenHelper;
Context context;
String sortOrder;
public MainFragment() {
}
public static MainFragment newInstance(String sortOrder) {
Bundle args = new Bundle();
args.putString("SORT", sortOrder);
MainFragment fragment = new MainFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
sortOrder = getArguments().getString("SORT");
if (sortOrder == "fav") {
new FetchDataFromDb().execute();
} else {
new FetchDataFromApi(sortOrder).execute();
}
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, container, false);
gridview = (GridView) view.findViewById(R.id.gridView);
context = getActivity();
adapter = new movieAdapter(context, R.layout.movie_item, MainActivity.movies);
return view;
}
class FetchDataFromApi extends AsyncTask<String, Void, Boolean> {
String SORT_CATEGORY;
FetchDataFromApi(String paramUrl) {
SORT_CATEGORY = paramUrl;
}
@Override
protected Boolean doInBackground(String... params) {
HttpURLConnection urlConnection = null;
try {
Uri uriBuilder = Uri.parse(BASE_URL).buildUpon()
.appendQueryParameter("sort_by", SORT_CATEGORY)
.appendQueryParameter("api_key", API_KEY)
.build();
URL url = new URL(uriBuilder.toString());
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = urlConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
String response = sb.toString();
ParseJsonData(response);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally {
urlConnection.disconnect();
}
return null;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
gridview.setAdapter(adapter);
Log.v("debug", String.valueOf(gridview.getAdapter()));
if (MainActivity.isTablet()) {
/*MainActivity.showDetails(0);*/
}
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long ss) {
MainActivity.showDetails(position);
}
});
}
}
private void ParseJsonData(String response) throws JSONException {
String PosterBaseUrl = "http://image.tmdb.org/t/p/";
String LargePoster = "w185";
String SmallPoster = "";
final String RESULTS = "results";
final String ORIGINAL_TITLE = "original_title";
final String OVERVIEW = "overview";
final String RELEASE_DATE = "release_date";
final String POSTER_PATH = "poster_path";
final String VOTE_AVERAGE = "vote_average";
final String POPULARITY = "popularity";
final String ID = "id";
MainActivity.movies.clear();
JSONObject jsono = new JSONObject(response);
// Log.v("Json", response);
JSONArray jarray = jsono.getJSONArray(RESULTS);
for (int i = 0; i < jarray.length(); i++) {
JSONObject object = jarray.getJSONObject(i);
String id = object.getString(ID);
String title = object.getString(ORIGINAL_TITLE);
String releaseDate = object.getString(RELEASE_DATE);
String overView = object.getString(OVERVIEW);
String voteAverage = object.getString(VOTE_AVERAGE);
String popularity = object.getString(POPULARITY);
String posterPath = object.getString(POSTER_PATH);
String BigPoster = PosterBaseUrl + LargePoster + posterPath;
String MinPoster = PosterBaseUrl + SmallPoster + posterPath;
Movie m = new Movie();
m.setId(id);
m.setTitle(title);
m.setReleaseDate(releaseDate);
m.setOverView(overView);
m.setVoteAverage(voteAverage);
m.setPopularity(popularity);
m.setLargePoster(BigPoster);
m.setMinPoster(MinPoster);
MainActivity.movies.add(m);
}
}
class FetchDataFromDb extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... params) {
dbOpenHelper = new DbOpenHelper(MainActivity.context);
MainActivity.movies = dbOpenHelper.getAllFavoritePosters();
return null;
}
@Override
protected void onPostExecute(Boolean aBoolean) {
super.onPostExecute(aBoolean);
Log.v("database status", "Finished From Db");
DbAdapter = new movieAdapter(context, R.layout.movie_item, MainActivity.movies);
gridview.setAdapter(DbAdapter);
if (MainActivity.isTablet()) {
MainActivity.showDetails(0);
}
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long ss) {
MainActivity.showDetails(position);
}
});
}
}
}
public类MainFragment扩展片段{
公共最终静态字符串API_KEY=“b932ba435fc93a5944938fe9d44cd198”;
公共最终字符串BASE_URL=”http://api.themoviedb.org/3/discover/movie?sort_by=&api_key=";
电影适配器;
电影适配器;
GridView;
DbOpenHelper-DbOpenHelper;
语境;
字符串排序器;
公共MainFragment(){
}
公共静态MainFragment newInstance(字符串排序器){
Bundle args=新Bundle();
args.putString(“SORT”,sortOrder);
MainFragment=新的MainFragment();
fragment.setArguments(args);
返回片段;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
如果(getArguments()!=null){
sortOrder=getArguments().getString(“排序”);
如果(排序器==“fav”){
新建FetchDataFromDb().execute();
}否则{
新的FetchDataFromApi(sortOrder).execute();
}
}
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment_main,容器,假);
gridview=(gridview)view.findViewById(R.id.gridview);
context=getActivity();
adapter=新电影适配器(上下文,R.layout.movie_项,MainActivity.movies);
返回视图;
}
类FetchDataFromApi扩展了AsyncTask{
字符串分类;
FetchDataFromApi(字符串参数URL){
SORT_CATEGORY=paramUrl;
}
@凌驾
受保护的布尔doInBackground(字符串…参数){
HttpURLConnection-urlConnection=null;
试一试{
Uri-uriBuilder=Uri.parse(BASE_-URL).buildon()
.appendQueryParameter(“排序依据”,排序类别)
.appendQueryParameter(“api_键”,api_键)
.build();
URL=新URL(uriBuilder.toString());
urlConnection=(HttpURLConnection)url.openConnection();
InputStream in=urlConnection.getInputStream();
BufferedReader BufferedReader=新的BufferedReader(新的InputStreamReader(in));
StringBuilder sb=新的StringBuilder();
弦线;
而((line=bufferedReader.readLine())!=null){
某人附加(行);
}
字符串响应=sb.toString();
ParseJsonData(应答);
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}捕获(JSONException e){
e、 printStackTrace();
}最后{
urlConnection.disconnect();
}
返回null;
}
@凌驾
受保护的void onPostExecute(布尔结果){
super.onPostExecute(结果);
网格视图
public class MainActivity extends AppCompatActivity {
public static final String popluar = "popularity.desc";
public static final String top_rate = "vote_average.desc";
public static Context context;
public static ArrayList<Movie> movies = new ArrayList<>();
public static FragmentManager fm;
public static Configuration config;
public static String id;
public static String title;
public static String releaseDate;
public static String overView;
public static String voteAverage;
public static String popularity;
public static String poster;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
context = MainActivity.this;
fm = getSupportFragmentManager();
config = getResources().getConfiguration();
ReplaceFragments(popluar);
}
public static boolean isTablet() {
if (config.smallestScreenWidthDp >= 600) {
return true;
}else {
return false;
}
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.most_popular) {
ReplaceFragments(popluar);
return true;
}
if (id == R.id.highest_rated) {
ReplaceFragments(top_rate);
return true;
}
if (id == R.id.favorite) {
ReplaceFragments("fav");
return true;
}
return super.onOptionsItemSelected(item);
}
private void ReplaceFragments(String SortBy) {
if (isTablet()){
MainFragment mainFragment = MainFragment.newInstance(SortBy);
getSupportFragmentManager().beginTransaction().replace(R.id.tabletMain, mainFragment)
.commit();
}else{
MainFragment mainFragment = MainFragment.newInstance(SortBy);
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentMain, mainFragment)
.commit();
}
}
public static void showDetails(int position) {
id = movies.get(position).getId();
title = movies.get(position).getTitle();
releaseDate = movies.get(position).getReleaseDate();
overView = movies.get(position).getOverView();
voteAverage = movies.get(position).getVoteAverage();
popularity = movies.get(position).getPopularity();
poster = movies.get(position).getLargePoster();
if (isTablet()) {
DetailFragment detailFragment = new DetailFragment();
fm.beginTransaction().replace(R.id.tabletDetail, detailFragment)
.commit();
} else {
Intent intent = new Intent(context, DetailedActivity.class);
context.startActivity(intent);
}
}
}
public class MainFragment extends Fragment {
public final static String API_KEY = "b932ba435fc93a5944938fe9d44cd198";
public final String BASE_URL = "http://api.themoviedb.org/3/discover/movie?sort_by=&api_key=";
movieAdapter adapter;
movieAdapter DbAdapter;
GridView gridview;
DbOpenHelper dbOpenHelper;
Context context;
String sortOrder;
public MainFragment() {
}
public static MainFragment newInstance(String sortOrder) {
Bundle args = new Bundle();
args.putString("SORT", sortOrder);
MainFragment fragment = new MainFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
sortOrder = getArguments().getString("SORT");
if (sortOrder == "fav") {
new FetchDataFromDb().execute();
} else {
new FetchDataFromApi(sortOrder).execute();
}
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, container, false);
gridview = (GridView) view.findViewById(R.id.gridView);
context = getActivity();
adapter = new movieAdapter(context, R.layout.movie_item, MainActivity.movies);
return view;
}
class FetchDataFromApi extends AsyncTask<String, Void, Boolean> {
String SORT_CATEGORY;
FetchDataFromApi(String paramUrl) {
SORT_CATEGORY = paramUrl;
}
@Override
protected Boolean doInBackground(String... params) {
HttpURLConnection urlConnection = null;
try {
Uri uriBuilder = Uri.parse(BASE_URL).buildUpon()
.appendQueryParameter("sort_by", SORT_CATEGORY)
.appendQueryParameter("api_key", API_KEY)
.build();
URL url = new URL(uriBuilder.toString());
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = urlConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
String response = sb.toString();
ParseJsonData(response);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally {
urlConnection.disconnect();
}
return null;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
gridview.setAdapter(adapter);
Log.v("debug", String.valueOf(gridview.getAdapter()));
if (MainActivity.isTablet()) {
/*MainActivity.showDetails(0);*/
}
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long ss) {
MainActivity.showDetails(position);
}
});
}
}
private void ParseJsonData(String response) throws JSONException {
String PosterBaseUrl = "http://image.tmdb.org/t/p/";
String LargePoster = "w185";
String SmallPoster = "";
final String RESULTS = "results";
final String ORIGINAL_TITLE = "original_title";
final String OVERVIEW = "overview";
final String RELEASE_DATE = "release_date";
final String POSTER_PATH = "poster_path";
final String VOTE_AVERAGE = "vote_average";
final String POPULARITY = "popularity";
final String ID = "id";
MainActivity.movies.clear();
JSONObject jsono = new JSONObject(response);
// Log.v("Json", response);
JSONArray jarray = jsono.getJSONArray(RESULTS);
for (int i = 0; i < jarray.length(); i++) {
JSONObject object = jarray.getJSONObject(i);
String id = object.getString(ID);
String title = object.getString(ORIGINAL_TITLE);
String releaseDate = object.getString(RELEASE_DATE);
String overView = object.getString(OVERVIEW);
String voteAverage = object.getString(VOTE_AVERAGE);
String popularity = object.getString(POPULARITY);
String posterPath = object.getString(POSTER_PATH);
String BigPoster = PosterBaseUrl + LargePoster + posterPath;
String MinPoster = PosterBaseUrl + SmallPoster + posterPath;
Movie m = new Movie();
m.setId(id);
m.setTitle(title);
m.setReleaseDate(releaseDate);
m.setOverView(overView);
m.setVoteAverage(voteAverage);
m.setPopularity(popularity);
m.setLargePoster(BigPoster);
m.setMinPoster(MinPoster);
MainActivity.movies.add(m);
}
}
class FetchDataFromDb extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... params) {
dbOpenHelper = new DbOpenHelper(MainActivity.context);
MainActivity.movies = dbOpenHelper.getAllFavoritePosters();
return null;
}
@Override
protected void onPostExecute(Boolean aBoolean) {
super.onPostExecute(aBoolean);
Log.v("database status", "Finished From Db");
DbAdapter = new movieAdapter(context, R.layout.movie_item, MainActivity.movies);
gridview.setAdapter(DbAdapter);
if (MainActivity.isTablet()) {
MainActivity.showDetails(0);
}
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long ss) {
MainActivity.showDetails(position);
}
});
}
}
}