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