Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Android 搜索数据时无法启动搜索活动_Android_Search - Fatal编程技术网

Android 搜索数据时无法启动搜索活动

Android 搜索数据时无法启动搜索活动,android,search,Android,Search,因此,我试图对这个搜索活动进行编程,当我在模拟器中执行搜索时,我在我的日志猫中得到一个错误,该错误表示该活动无法启动,我无法找出导致该错误的原因 搜索活动代码: package com.example.myfirstapp; import android.os.Bundle; import android.app.SearchManager; import android.app.ListActivity; import android.view.Menu; import android.vi

因此,我试图对这个搜索活动进行编程,当我在模拟器中执行搜索时,我在我的日志猫中得到一个错误,该错误表示该活动无法启动,我无法找出导致该错误的原因

搜索活动代码:

package com.example.myfirstapp;

import android.os.Bundle;
import android.app.SearchManager;
import android.app.ListActivity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.content.Intent;
import android.database.Cursor;
public class SearchResultsActivity extends ListActivity {

private ListView list;
DatabaseTable db = new DatabaseTable(this);
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(android.R.id.list);
    handleIntent(getIntent());
}

public void onNewIntent(Intent intent) {
    setIntent(intent);
    handleIntent(intent);
}

private void handleIntent(Intent intent) {
    if (Intent.ACTION_VIEW.equals(intent.getAction())) {
        Intent contactIntent = new Intent(this, ContactActivity.class);
        contactIntent.setData(intent.getData());
        startActivity(contactIntent);
        finish();
    } else if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        showResults(query);
    }

}

private void showResults(String query) {
    int name = 0;
    String c = "";
    Cursor cursor = db.getContactMatches(query, null);
    int cursor_length = db.cursorLength(cursor);
    String[] display = new String[cursor_length];
    list = (ListView)findViewById(android.R.id.list);
    int x = 0;

    //Loading data through Cursor into String array
    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext())
    {
        name = cursor.getColumnIndex(DatabaseTable.COL_NAME);
        c = (cursor.getString(name));
        display[x] = c;
        c = "";
        x = x + 1;
        name = 0;
    }

    ArrayAdapter<String> contactAdapter = new ArrayAdapter<String>(this,
              R.layout.activity_search_results, android.R.id.list, display);
    list.setAdapter(contactAdapter);
    list.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent contactIntent = new Intent(getApplicationContext(),ContactActivity.class);
            contactIntent.setData(getIntent().getData());
            startActivity(contactIntent);
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_search_results, menu);
    return true;
} 
package com.example.myfirstapp;
导入android.os.Bundle;
导入android.app.SearchManager;
导入android.app.ListActivity;
导入android.view.Menu;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.content.Intent;
导入android.database.Cursor;
公共类SearchResultsActivity扩展了ListActivity{
私有列表视图列表;
DatabaseTable db=新的DatabaseTable(此);
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(android.R.id.list);
handleIntent(getIntent());
}
公共帐篷(意向){
设定意图(intent);
手册内容(意图);
}
私人无效手册内容(意图){
if(Intent.ACTION_VIEW.equals(Intent.getAction())){
Intent contactIntent=新的Intent(这是ContactActivity.class);
contactIntent.setData(intent.getData());
起始触觉(接触意图);
完成();
}else if(Intent.ACTION_SEARCH.equals(Intent.getAction())){
String query=intent.getStringExtra(SearchManager.query);
显示结果(查询);
}
}
私有void显示结果(字符串查询){
int name=0;
字符串c=“”;
Cursor Cursor=db.getContactMatches(查询,null);
int cursor_length=db.cursorLength(光标);
字符串[]显示=新字符串[光标长度];
list=(ListView)findViewById(android.R.id.list);
int x=0;
//通过游标将数据加载到字符串数组中
对于(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext())
{
name=cursor.getColumnIndex(DatabaseTable.COL\u name);
c=(cursor.getString(name));
显示[x]=c;
c=“”;
x=x+1;
name=0;
}
ArrayAdapter contactAdapter=新的ArrayAdapter(此,
R.layout.activity\u搜索结果,android.R.id.list,显示);
列表.设置适配器(contactAdapter);
list.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Intent contactIntent=新的Intent(getApplicationContext(),ContactActivity.class);
setData(getIntent().getData());
起始触觉(接触意图);
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.activity\u search\u results,menu);
返回true;
} 
}

安卓清单

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myfirstapp"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <meta-data
            android:name="android.app.default_searchable"
            android:value=".SearchResultsActivity" />
    </activity>
    <activity
        android:name=".SearchResultsActivity"
        android:label="@string/title_activity_search_results"
        android:launchMode="singleTop" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    </activity>
    <activity
        android:name=".AddContacts"
        android:label="@string/title_activity_add_contacts" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".ContactActivity"
        android:label="@string/title_activity_contact" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

这里

有关使用ListView创建布局的信息,请参见本教程:


first move
db=新数据库表(此)应用程序崩溃时SearchResultsActivity和post log的onCreate方法内部你说你在logcat中有错误…我们应该猜它是什么吗?哦,Sry,忘了发布12-27 19:59:22.902:E/AndroidRuntime(613):致命异常:main 12-27 19:59:22.902:E/AndroidRuntime(613):java.lang.RuntimeException:无法启动活动组件信息{com.example.myfirstapp/com.example.myfirstapp.SearchResultsActivity}:android.content.res.Resources$NotFoundException:来自xml类型布局资源ID#0x102000a 12-27 19:59:22.902:E/AndroidRuntime(613):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(android.R.id.list);  //<<<<
 DatabaseTable db;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
                 setContentView(R.layout.main); // <<< add activity layout here
        db = new DatabaseTable(this);