简体   繁体   中英

Android Intent doesnt work

so I have these code

main.java

package com.example.kamusinggris_indonesiaidiom;

import android.app.Activity;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class Main extends Activity {
private TextView teks;
private ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    teks = (TextView) findViewById(R.id.text);
    list = (ListView) findViewById(R.id.list);

}
 protected void onNewIntent(Intent intent) {
        handleIntent(getIntent());
         }
private void handleIntent(Intent intent) {
    // TODO Auto-generated method stub
    handleIntent(intent);

     if (Intent.ACTION_VIEW.equals(intent.getAction())) {
            Intent wordIntent = new Intent(this, Definisi.class);
            wordIntent.setData(intent.getData());
            startActivity(wordIntent);
        } else if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            String query = intent.getStringExtra(SearchManager.QUERY);
            showResults(query);
}


}
    private void showResults(String query) {
    // TODO Auto-generated method stub
    Cursor cursor = managedQuery(Provider.CONTENT_URI, null, null,
            new String[] {query}, null);

    if (cursor == null) {
        // There are no results
        teks.setText(getString(R.string.no_results, new Object[] {query}));
    } else {
        // Display the number of results
        int count = cursor.getCount();
        String countString = getResources().getQuantityString(R.plurals.search_results,
                                count, new Object[] {count, query});
        teks.setText(countString);

        // Specify the columns we want to display in the result
        String[] from = new String[] { Database.KATA,
                                       Database.DEFINISI };

        // Specify the corresponding layout elements where we want the columns to go
        int[] to = new int[] { R.id.kata,
                               R.id.definisi };

        // Create a simple cursor adapter for the definitions and apply them to the ListView
        SimpleCursorAdapter words = new SimpleCursorAdapter(this,
                                      R.layout.hasil_pencarian, cursor, from, to);
        list.setAdapter(words);

        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View tmp,
                    int posisi, long id) {
                // TODO Auto-generated method stub
                Intent definisi = new Intent(getApplicationContext(), Definisi.class);
                Uri data = Uri.withAppendedPath(Provider.CONTENT_URI,
                                                String.valueOf(id));
                definisi.setData(data);
                startActivity(definisi);
            }

});
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
                     searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())    );
        searchView.setIconifiedByDefault(false);
    }

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.search:
            onSearchRequested();
            return true;
        default:
            return false;
    }
}
}

definisi.java

package com.example.kamusinggris_indonesiaidiom;

import android.app.ActionBar;
import android.app.Activity;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.SearchView;
import android.widget.TextView;

public class Definisi extends Activity {

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

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
}
    Uri uri = getIntent().getData();
    Cursor kursor = managedQuery(uri, null, null, null, null);

    if (kursor == null) {
        finish();
    } else {
        kursor.moveToFirst();

        TextView kata = (TextView) findViewById(R.id.kata);
        TextView definisi= (TextView) findViewById(R.id.definisi);

        int wIndex = kursor.getColumnIndexOrThrow(Database.KATA);
        int dIndex = kursor.getColumnIndexOrThrow(Database.DEFINISI);

        kata.setText(kursor.getString(wIndex));
        definisi.setText(kursor.getString(dIndex));
}       }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(false);
    }

    return true;
}   
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.search:
            onSearchRequested();
            return true;
        case android.R.id.home:
            Intent a = new Intent(this, Main.class);
            a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(a);
            return true;
        default:
            return false;
    }
}
}

its a dictionary, so when a search suggestion on a listview is clicked, it supposed to open the definisi.java and display the definition. But what I got here is when I clicked the search suggestion it displayed the main.java (its just go back to the previous activity). what's wrong on the intent part? please help me

Use passed intent variable in onNewIntent

 protected void onNewIntent(Intent intent) {
        handleIntent(intent);
 }

You should also remove call to handleIntent from within handleIntent method

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM