Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 很遗憾,*GridView*已停止_Java_Android_Android Activity_Android Appcompat - Fatal编程技术网

Java 很遗憾,*GridView*已停止

Java 很遗憾,*GridView*已停止,java,android,android-activity,android-appcompat,Java,Android,Android Activity,Android Appcompat,我正在实现GridView方法。一切都很顺利,按照我的代码显示了一个由八个图像组成的网格,但随后我添加了一个代码,单击一个图像后,将显示带有两个按钮的对话框。但是,当我执行完整代码时,应用程序出现了如上所述的问题。我已经包括了代码,如果你发现有什么遗漏,请在下面评论,我也会粘贴。请帮忙 Styles.xml: <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Th

我正在实现GridView方法。一切都很顺利,按照我的代码显示了一个由八个图像组成的网格,但随后我添加了一个代码,单击一个图像后,将显示带有两个按钮的对话框。但是,当我执行完整代码时,应用程序出现了如上所述的问题。我已经包括了代码,如果你发现有什么遗漏,请在下面评论,我也会粘贴。请帮忙

Styles.xml:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
MainActivity.java:

package com.shubham.gridview;

import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {


GridView myGrid;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    myGrid = (GridView) findViewById(R.id.gridView);
    myGrid.setAdapter(new ShubhAdapter(this));

    myGrid.setOnItemClickListener(this);


}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    Intent intent = new Intent(this, MyDialog.class);
    startActivity(intent);
}
}

class City
{
    int imageId;
String cityName;

City(int imageId, String cityName)
{
    this.imageId = imageId;
    this.cityName = cityName;

}
}

class ShubhAdapter extends BaseAdapter
{

ArrayList<City> list;
Context context;
ShubhAdapter(Context context)
{
    this.context = context;
    list = new ArrayList<City>();
    Resources res = context.getResources();
    String[] tempCityNames = res.getStringArray(R.array.city_names);
    int[] cityImages = { R.drawable.ahmedabad, R.drawable.bangalore, R.drawable.chennai,
                        R.drawable.delhi, R.drawable.hyderabad, R.drawable.kolkata,
                        R.drawable.lucknow, R.drawable.mumbai};

    for (int i=0; i<8; i++)
    {
        City tempCity = new City(cityImages[i], tempCityNames[i]);
        list.add(tempCity);
    }
}

@Override
public int getCount() {
    return list.size();
}

@Override
public Object getItem(int i) {
    return list.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}

class ViewHolder
{
    ImageView myCity;
    ViewHolder(View v)
    {
        myCity = (ImageView) v.findViewById(R.id.imageView);

    }
}
@Override
public View getView(int i, View convertView, ViewGroup parent) {

    View row = convertView;
    ViewHolder holder = null;

    if(row == null)
    {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = inflater.inflate(R.layout.single_item, parent, false);
        holder = new ViewHolder(row);
        row.setTag(holder);
    }

    else
    {
        holder = (ViewHolder) row.getTag();
    }

    City temp = list.get(i);
    holder.myCity.setImageResource(temp.imageId);

    return row;
}
}

由于您使用的是
AppCompat活动
,因此您需要使用
主题.AppCompat(或其后代)并将其应用于您的应用程序或活动

比如:

<!-- styles.xml -->
<style name="AppTheme" parent="Theme.AppCompat">
  <!-- your app branding color for the app bar -->
  <item name="colorPrimary">@color/primary</item>
  <!-- darker variant for the status bar and contextual app bars -->
  <item name="colorPrimaryDark">@color/primary_dark</item>
  <!-- theme UI controls like checkboxes and text fields -->
  <item name="colorAccent">@color/accent</item>
 </style>

@颜色/原色
@颜色/原色/深色
@颜色/口音
在舱单中:

 <activity
    android:name=".MyDialog"
    android:theme="@style/AppTheme"></activity>

了解更多信息。

在清单中为您的活动添加一个主题,如下所示

<activity
        android:name=".MyDialog"
        android:launchMode="singleTask"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"></activity>

这一行会导致问题,就像异常所说的那样。使用

android:theme="@style/Theme.AppCompat.Light.Dialog"

您可能还需要将支持库添加到gradle文件。

您应该添加logcat@GabrieleMariotti完成。请显示您的AndroidManifest.xml以及主题。xml@xklakoux完成。
中有什么不清楚的原因:java.lang.IllegalStateException:您需要在此活动中使用Theme.AppCompat主题(或子代)。
<!-- styles.xml -->
<style name="AppTheme" parent="Theme.AppCompat">
  <!-- your app branding color for the app bar -->
  <item name="colorPrimary">@color/primary</item>
  <!-- darker variant for the status bar and contextual app bars -->
  <item name="colorPrimaryDark">@color/primary_dark</item>
  <!-- theme UI controls like checkboxes and text fields -->
  <item name="colorAccent">@color/accent</item>
 </style>
 <activity
    android:name=".MyDialog"
    android:theme="@style/AppTheme"></activity>
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

      ...

   </application>
<activity
        android:name=".MyDialog"
        android:launchMode="singleTask"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"></activity>
android:theme="@android:style/Theme.Dialog"
android:theme="@style/Theme.AppCompat.Light.Dialog"