2014-04-22 16 views
1

문제가 해결되었지만 찾을 수 없으면 이미 확인했습니다.DrawerItemClickListener를 유형으로 확인할 수 없습니다. - Android 앱

DrawerItemClickListener를 사용하여 서랍 메뉴를 만들고 싶습니다.

나는 안드로이드 API (19)를 사용하고 4.4.2 가 여기 내 수입이다 : 나는 서랍에서 잘 작동 안드로이드 개발자 웹 사이트에서 샘플을 다운로드하기 때문에

import android.app.Activity; 
import android.app.Fragment; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.ActionBarDrawerToggle; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 
import android.app.SearchManager; 
import android.content.res.Configuration; 
import android.view.MenuInflater; 
import android.widget.AdapterView; 
import android.widget.Toast; 

이 좀 이상해. 처음에 나는 좋은 도서관을 가지고 있지 않았지만 나의 샘플을 나의 것으로 바꿨다. 아무것도 바뀌지 않았다!

내가 대신 (I 다운로드 한 샘플 등)의 프레임 하나의 상대 레이아웃이
public class MainActivity extends Activity { 

final String TEST = "user_password"; 
private DrawerLayout mDrawerLayout; 
private ListView mDrawerList; 
private ActionBarDrawerToggle mDrawerToggle; 

private CharSequence mDrawerTitle; 
private CharSequence mTitle; 
private String[] mPlanetTitles; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    RelativeLayout layout = (RelativeLayout) RelativeLayout.inflate(this, R.layout.fragment_main, null); 
    setContentView(layout); 
    TextView text = (TextView) layout.findViewById(R.id.textView1); 
    text.setText("Calculez votre IMC !"); 

    Button b = (Button) layout.findViewById(R.id.button1); 
    final TextView text2 = (TextView) layout.findViewById(R.id.textView2); 

    final EditText poids = (EditText) layout.findViewById(R.id.editText1); 
    final EditText taille = (EditText) layout.findViewById(R.id.editText2); 

    b.setText("Calculez"); 
    b.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String rawSize = taille.getText().toString(); 

      Float p = Float.parseFloat(poids.getText().toString()); 
      if (rawSize.indexOf(',') == -1 && rawSize.indexOf('.') == -1 && rawSize.length() == 3) 
      { 
       StringBuilder tmp = new StringBuilder(); 
       tmp.append(rawSize.charAt(0)); 
       tmp.append('.'); 
       tmp.append(rawSize.charAt(1)); 
       tmp.append(rawSize.charAt(2)); 
       rawSize = tmp.toString(); 
      } 

      if (rawSize.indexOf(',') != -1) 
       rawSize = rawSize.replace(',', '.'); 

      Float t = Float.parseFloat(rawSize); 
      int res = (int) (p/Math.pow(t, 2)); 
      text2.setText("Votre IMC est de : "+res); 
     } 
    }); 

    final Button loginButton = (Button) findViewById(R.id.button2); 
    loginButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MainActivity.this, SecondActivity.class); 
      intent.putExtra(TEST, poids.getText().toString()); 
      startActivity(intent); 
     } 
    }); 

    mTitle = mDrawerTitle = getTitle(); 
    mPlanetTitles = getResources().getStringArray(R.array.planets_array); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerList = (ListView) findViewById(R.id.left_drawer); 

    // set a custom shadow that overlays the main content when the drawer opens 
    //mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 
    // set up the drawer's list view with items and click listener 
    mDrawerList.setAdapter(new ArrayAdapter<String>(this, 
      R.layout.drawer_list_item, mPlanetTitles)); 
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

    // enable ActionBar app icon to behave as action to toggle nav drawer 
    getActionBar().setDisplayHomeAsUpEnabled(true); 
    getActionBar().setHomeButtonEnabled(true); 

    // ActionBarDrawerToggle ties together the the proper interactions 
    // between the sliding drawer and the action bar app icon 
    mDrawerToggle = new ActionBarDrawerToggle(
      this,     /* host Activity */ 
      mDrawerLayout,   /* DrawerLayout object */ 
      R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */ 
      R.string.drawer_open, /* "open drawer" description for accessibility */ 
      R.string.drawer_close /* "close drawer" description for accessibility */ 
      ) { 
     public void onDrawerClosed(View view) { 
      getActionBar().setTitle(mTitle); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

     public void onDrawerOpened(View drawerView) { 
      getActionBar().setTitle(mDrawerTitle); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 
    }; 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 
} 

내가 그 문제를 해결하는 방법을 모른다

... 그러나 나는이 일을하지 않는 그것은이다 문제.

+0

프로젝트에 android-support-v4 라이브러리가 포함되어 있습니까? – shkschneider

+0

나는 그렇게 생각한다. 내가 "안드로이드 개인 라이브러리"에서 일식을 간다면, android-support-v4가 있습니다. – user3561383

+0

'DrawerItemCLickListener'라는 클래스가 있습니까 – Raghunandan

답변

2

나는 비슷한 문제가있어서 해결책을 찾았습니다. 비공개로 생성했습니다. DrawerItemClickListener

private class DrawerItemClickListener implements ListView.OnItemClickListener { 

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

     // Highlight the selected item, update the title, and close the drawer 
     // update selected item and title, then close the drawer 
     mDrawerList.setItemChecked(position, true); 
     setTitle("......"); 

     String text= "menu click... should be implemented"; 
     Toast.makeText(MainActivity.this, text, Toast.LENGTH_LONG).show(); 
     mDrawerLayout.closeDrawer(mDrawerList); 

    } 
} 
관련 문제