Я новичок в программировании для Android, и я написал программу, построил ее без ошибок, но когда я запустил ее, он дал мне сообщение об ошибке, к сожалению, мое приложение перестало работать. вот моя программа.К сожалению, у меня приложение перестало работать
listview_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:id="@+id/search"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:hint="@string/hint_message"/>
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/search"/>
</RelativeLayout>
listview_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/universitylabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/universitylabel" />
<TextView
android:id="@+id/university"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/universitylabel" />
<TextView
android:id="@+id/Statelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/universitylabel"
android:text="@string/Statelabel" />
<TextView
android:id="@+id/State"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/university"
android:layout_toRightOf="@+id/Statelabel" />
<TextView
android:id="@+id/vicechancellorlabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/Statelabel"
android:text="@string/vicechancellorlabel" />
<TextView
android:id="@+id/vicechancellor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/State"
android:layout_toRightOf="@+id/vicechancellorlabel" />
<TextView
android:id="@+id/websitelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/vicechancellorlabel"
android:text="@string/websitelabel"/>
<TextView
android:id="@+id/website"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/vicechancellor"
android:layout_toRightOf="@+id/websitelabel" />
</RelativeLayout>
singleitemview.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/universitylabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/universitylabel" />
<TextView
android:id="@+id/university"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/universitylabel" />
<TextView
android:id="@+id/Statelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/universitylabel"
android:text="@string/Statelabel" />
<TextView
android:id="@+id/State"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/university"
android:layout_toRightOf="@+id/Statelabel" />
<TextView
android:id="@+id/vicechancellorlabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/Statelabel"
android:text="@string/vicechancellorlabel" />
<TextView
android:id="@+id/vicechancellor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/State"
android:layout_toRightOf="@+id/vicechancellorlabel" />
<TextView
android:id="@+id/websitelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/vicechancellorlabel"
android:text="@string/websitelabel" />
<TextView
android:id="@+id/website"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/vicechancellor"
android:layout_toRightOf="@+id/websitelabel" />
</RelativeLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.spookyapp.findme"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name="com.spookyapp.findme.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.spookyapp.findme.SingleItemView"
android:label="@string/app_name">
</activity>
</application>
</manifest>
MainActivity.java
package com.spookyapp.findme;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.Locale;
public class MainActivity extends Activity {
// Declare Variables
private ListView list;
private ListViewAdapter adapter;
private EditText editsearch;
private String[] university;
private String[] State;
private String[] vicechancellor;
private String[] website;
private final ArrayList<UniversityDetails> arraylist = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_main);
// Generate sample data
university = new String[]{"Abubakar Tafawa Balewa University","Adeyemi University Education","Ahmadu Bello University","Alvan Ikoku University of Education","Bayero University","Federal University Gashua","Federal University of Education kano","Federal University of Education Zaria","Federal University of Health Science Otukpo","Federal University of Petroleum Resources Effurun","Federal University of Technology Akure","Federal University of Technology Minna","Federal University of Technology Owerri","Federal University Dutse","Federal University Dutsin-Ma","Federal University Kashere","Federal University Lafia","Federal University, Lokoja","Federal University, Ndufu-Alike","Federal University, Otuoke","Federal University, Oyo-Ekiti","Federal University, Wukari","Federal University,Birnin Kebbi","Federal University,Gusau","Michael Okpara Uni. of Agric., Umudike","Modibbo Adama University of Technology","National Open University of Nigeria","Nigeria Maritime University, Okerenkoko","Nigeria Police Academy Wudil","Nigerian Defence Academy","Nnamdi Azikiwe University, Awka","Obafemi Awolowo University,Ile-Ife","University of Abuja, Gwagwalada","University of Agriculture, Abeokuta","University of Agriculture, Makurdi","University of Benin","University of Calabar","University of Ibadan","University of Ilorin","University of Jos","University of Lagos","University of Maiduguri","University of Nigeria, Nsukka","University of Port-Harcourt","University of Uyo","Usumanu Danfodiyo University"
};
State = new String[]{" Bauchi"," Ondo"," Zaria","Imo","Kano","Yobe","Kano","Zaria","Benue","Delta","Ondo","Niger","Imo","Jigawa","Kastina","Gombe","Nasarawa","Kogi","Ebonyi","Bayelsa","Ekiti","Taraba","Kebbi","Zamfara","Abia","Adamawa","Lagos","Delta","Kano","Kaduna","Anambra","Oyo","Abuja","Ogun","Benue","Edo","Cross,Rivers","Oyo","Kwara","Plateau","Lagos","Borno","Enugu","Rivers" ,"Akwa,Ibom" ,"Sokoto"};
vicechancellor=new String[]{"Prof. Saminu Ibrahim","Prof. Richard King","Prof.Ibrahim Garba","Prof.Sadiq Abubakar" ,"Prof.Abubakar Adamu Rasheed mni","Prof.Shehu Abdulrahman","Prof.Victor Awonusi" ,"Prof.Ibrahim Kolo","Prof. Martins Aghaji","Prof. Akaehomen O.A Ibhadode","Prof. Adebiyi Gregory Daramola","Prof. Musibau Adewunmi Akanji","Prof. Chigozie C. Asiabaka","Prof. Jibril Dahiru Amin","Prof. James O. I. Ayatse","Prof. Mohammed Kabiru Farouk","Prof. Ekanem Ikpi Braide","Prof. Abdulmumini Rafindadi","Prof. Oye Ibidapo-Obe","Prof. Mobolaji E. Aluko","Prof. Isaac Asuzu","Prof. Geoffrey Okogbaa","Prof.Lawal Suleiman Bilbis","Prof. Ben Chuks Okeke","Prof. Hillary Odo Edoga","Prof. B. H. Usman","Prof. Vincent A. Tenebe","Prof. Ongoebi Maureen O. Etebu","Prof. Munzali Jibril","Prof. S.O Okeniyi","Prof. Joseph E. Ehaneku","Prof. Bamitale Omole","Prof. Michael Umale Adikwu","Prof. O. B. Oyewole","Prof. Emmanuel I. Kucha","Prof. Faraday Orumwense","Prof. James Epoke","Prof. Isaac Folorunso Adewole","Prof. Abdulganiyu Ambali","Prof. Hayward B. Mafuyai","Prof. Rahman A. Bello","Prof. Ibrahim A. Njodi","Prof. Benjamin C. Ozumba","Prof. Joseph Ajienka" ,"Prof. Comfort M. Ekpo","Prof. Riskuwa A. Shehu "};
website=new String[]{"http://www.atbu.edu.ng","","http://www.abu.edu.ng","","http://www.buk.edu.ng","www.fugashua.edu.ng","","","http://www.fupre.edu.ng","http://www.futa.edu.ng","http://www.futminna.edu.ng","http://www.futo.edu.ng","http://www.fud.edu.ng","http://www.fudutsinma.edu.ng","www.fukashere.edu.ng","http://www.fulafia.edu.ng","http://www.fulokoja.edu.ng","http://www.funai.edu.ng","http://www.fuotuoke.edu.ng","http://www.fuoye.edu.ng","http://www.fuwukari.edu.ng","www.fubk.edu.ng","www.fugus.edu.ng","http://www.moua.org","http://www.futy.edu.ng","http://www.nou.edu.ng","","www.npf.gov.ng","www.nda.edu.ng","http://www.unizik.edu.ng","http://www.oauife.edu.ng","http://www.uniabuja.edu.ng","http://www.unaab.edu.ng","http://www.uam.edu.ng","http://www.uniben.edu.ng","http://www.unical.edu.ng","http://www.ui.edu.ng","http://www.unilorin.edu.ng","http://www.unijos.edu.ng","http://www.unilag.edu.ng","http://www.unimaid.edu.ng","http://www.unn.edu.ng","http://www.uniport.edu.ng","http://www.uniuyo.edu.ng","http://www.udusok.edu.ng"};
// Locate the ListView in listview_main.xml
list = (ListView) findViewById(R.id.listview);
for (int i = 0; i < university.length; i++)
{
UniversityDetails ud = new UniversityDetails(university[i], State[i],
vicechancellor[i],website[i]);
// Binds all strings into an array
arraylist.add(ud);
}
// Pass results to ListViewAdapter Class
adapter = new ListViewAdapter(this, arraylist);
// Binds the Adapter to the ListView
list.setAdapter(adapter);
// Locate the EditText in listview_main.xml
editsearch = (EditText) findViewById(R.id.search);
// Capture Text in EditText
editsearch.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
String text = editsearch.getText().toString().toLowerCase(Locale.getDefault());
adapter.filter(text);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.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);
}
}
ListViewAdapter.java
package com.spookyapp.findme;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import android.view.View.OnClickListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/**
* Created by ${hudds} on ${21/02/2016}.
*/
class ListViewAdapter extends BaseAdapter {
// Declare Variables
private final Context mContext;
private final LayoutInflater inflater;
private List<UniversityDetails> universityDetailsList = null;
private final ArrayList<UniversityDetails> arraylist;
public ListViewAdapter(Context context, List<UniversityDetails> universityDetailsList) {
mContext = context;
this.universityDetailsList = universityDetailsList;
inflater = LayoutInflater.from(mContext);
this.arraylist = new ArrayList<>();
this.arraylist.addAll(universityDetailsList);
}
public class ViewHolder {
TextView university;
TextView State;
TextView vicechancellor;
TextView website;
}
@Override
public int getCount(){
return universityDetailsList.size();
}
@Override
public UniversityDetails getItem(int position){
return universityDetailsList.get(position);
}
@Override
public long getItemId(int position){
return position;
}
public View getView(final int position, View view, ViewGroup parent){
final ViewHolder holder;
if (view == null){
holder = new ViewHolder();
view = inflater.inflate(R.layout.listview_item, null);
// Locate the TextViews in listview_item.xml
holder.university = (TextView) view.findViewById(R.id.university);
holder.State = (TextView) view.findViewById(R.id.State);
holder.vicechancellor = (TextView) view.findViewById(R.id.vicechancellor);
holder.website = (TextView) view.findViewById(R.id.website);
view.setTag(holder);
}else {
holder = (ViewHolder) view.getTag();
}
// Set the results into TextViews
holder.university.setText(universityDetailsList.get(position).getUniversity());
holder.State.setText(universityDetailsList.get(position).getState());
holder.vicechancellor.setText(universityDetailsList.get(position).getVicechancellor());
holder.website.setText(universityDetailsList.get(position).getWebsite());
// Listen for ListView Item Click
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0){
// Send single item click data to SingleItemView Class
Intent intent = new Intent(mContext, SingleItemView.class);
// Pass all data university
intent.putExtra("university",(universityDetailsList.get(position).getUniversity()));
// Pass all data State
intent.putExtra("State",(universityDetailsList.get(position).getState()));
// Pass all data vicechancellor
intent.putExtra("vicechancellor",(universityDetailsList.get(position).getVicechancellor()));
// Pass all data website
intent.putExtra ("website",(universityDetailsList.get(position).getWebsite()));
// Pass all data flag
// Start SingleItemView Class
mContext.startActivity(intent);
}
});
return view;
}
// Filter Class
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
universityDetailsList.clear();
if (charText.length() == 0) {
universityDetailsList.addAll(arraylist);
} else {
for (UniversityDetails ud : arraylist) {
if (ud.getState().toLowerCase(Locale.getDefault()).contains(charText)) {
universityDetailsList.add(ud);
}
}
}
notifyDataSetChanged();
}
}
SingleViewItem.java
package com.spookyapp.findme;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
/**
* Created by hudds on 21/02/2016.
*/
public class SingleItemView extends Activity {
// Declare Variables
private TextView txtuniversity;
private TextView txtState;
private TextView txtvicechancellor;
private TextView txtwebsite;
private String university;
private String State;
private String vicechancellor;
private String website;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.singleitemview);
// Retrieve data from MainActivity on item click event
Intent i = getIntent();
// Get the results of university
university = i.getStringExtra("university");
// Get the results of State
State = i.getStringExtra("State");
// Get the results of vice chancellor
vicechancellor = i.getStringExtra("vicechancellor");
// Get the results of website
website = i.getStringExtra("website");
// Locate the TextViews in singleitemview.xml
txtuniversity = (TextView) findViewById(R.id.university);
txtState = (TextView) findViewById(R.id.State);
txtvicechancellor = (TextView) findViewById(R.id.vicechancellor);
txtwebsite = (TextView) findViewById(R.id.website);
// Load the results into the TextViews
txtuniversity.setText(university);
txtState.setText(State);
txtvicechancellor.setText(vicechancellor);
txtwebsite.setText(website);
}
}
UniversityDetail.java
package com.spookyapp.findme;
/**
* Created by hudds on 21/02/2016.
*/
public class UniversityDetails {
private final String university;
private final String State;
private final String vicechancellor;
private final String website;
public UniversityDetails(String university, String State, String vicechancellor, String website) {
this.university = university;
this.State = State;
this.vicechancellor = vicechancellor;
this.website = website;
}
public String getUniversity() {
return this.university;
}
public String getState(){
return this.State;
}
public String getVicechancellor(){
return this.vicechancellor;
}
public String getWebsite(){
return this.website;
}
}
журнал кошки
2-22 09:24:21.254 3618-3618/? I/art: Not late-enabling -Xcheck:jni (already on)
02-22 09:24:25.861 3618-3618/com.spookyapp.findme D/AndroidRuntime: Shutting down VM
02-22 09:24:25.954 3618-3618/com.spookyapp.findme E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.spookyapp.findme, PID: 3618
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.spookyapp.findme/com.spookyapp.findme.MainActivity}: java.lang.ArrayIndexOutOfBoundsException: length=45; index=45
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=45; index=45
at com.spookyapp.findme.MainActivity.onCreate(MainActivity.java:48)
at android.app.Activity.performCreate(Activity.java:5937)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
02-22 09:24:31.691 3618-3618/com.spookyapp.findme I/Process: Sending signal. PID: 3618 SIG: 9
Возможно, у вас есть не все те же данные в строке aray .. !! – Nils
Можете ли вы попытаться напечатать длину всех ваших массивов? –
Проверьте количество элементов в массивах, которые вы используете. Вы зацикливаете массив «университет», поэтому убедитесь, что другие массивы, которые вы используете для получения индекса, не должны иметь меньшее количество элементов массива, чем «университетский» массив. – Mann