【问题标题】:Android Studio Can't find Drawable ResourceAndroid Studio 找不到可绘制资源
【发布时间】:2015-05-24 18:09:51
【问题描述】:
package com.sarham.kabs.fruity;

import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity implements AdapterView.OnItemClickListener{

    private DrawerLayout drawerLayout;
    private ListView listView;
    private String[] planets;
    private ActionBarDrawerToggle drawerListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        drawerLayout = (DrawerLayout)findViewById(R.id.drawerLayout);
        listView = (ListView)findViewById(R.id.drawerListView);
        planets = getResources().getStringArray(R.array.planets);
        listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, planets));
        listView.setOnItemClickListener(this);
        drawerListener = new ActionBarDrawerToggle(this, drawerLayout, R.mipmap.ic_drawer, R.string.drawer_open, R.string.drawer_close){
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                Toast.makeText(MainActivity.this,"Drawer Open", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
                Toast.makeText(MainActivity.this, "Drawer Closed", Toast.LENGTH_LONG).show();
            }
        };
        drawerLayout.setDrawerListener(drawerListener);
    }


    @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);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(this, planets[position]+" Was selected", Toast.LENGTH_LONG).show();
        selectItem(position);
    }
    public void selectItem(int position){
        listView.setItemChecked(position, true);
        setTitle(planets[position]);
    }
    public void setTitle(String title){
        getSupportActionBar().setTitle(title);
    }
}

我正在 android studio 中开发一个项目,我正在尝试放置导航抽屉图标,但我收到此错误:'找不到符号 R.mipmap.if_drawer', 我试过把它放在drawable中,但是符号'R.drawable会抛出同样的错误。 ic_drawer'

清理和重建后,我收到以下消息:

错误:(32, 26) 错误: 找不到适合 ActionBarDrawerToggle(MainActivity,DrawerLayout,int,int,int) 的构造函数 构造函数 ActionBarDrawerToggle.ActionBarDrawerToggle(Activity,Toolbar,DrawerLayout,T,int,int) 不适用 (不能从参数实例化,因为实际参数列表和形式参数列表的长度不同) 构造函数 ActionBarDrawerToggle.ActionBarDrawerToggle(Activity,DrawerLayout,Toolbar,int,int) 不适用 (实参int不能通过方法调用转换为Toolbar) 构造函数 ActionBarDrawerToggle.ActionBarDrawerToggle(Activity,DrawerLayout,int,int) 不适用 (实际参数列表和形式参数列表的长度不同) 其中 T 是一个类型变量: T extends Drawable,DrawerToggle 在构造函数中声明 ActionBarDrawerToggle(Activity,Toolbar,DrawerLayout,T,int,int)

【问题讨论】:

标签: android


【解决方案1】:

在检查 IDE 抛出的错误及其给出的建议时,我了解到以下内容: ActionBarDrawerToggle 有两个构造函数:

  1. ActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout, Toolbar toolbar, int drawerOpenContentDescription, int drawerClosedContentDescription)
  2. ActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout, int drawerOpenContentDescription, int drawerClosedContentDescription)

我使用了带有 4 个参数的第二个构造函数,并且导航抽屉工作正常,没有放置“ic_drawer”图标,而是用后退箭头替换。

【讨论】:

    【解决方案2】:

    有两个ActionBarDrawerToggle 类。哪个是

    1. v4
    2. v7

    这是一个常见的歧义问题。

    解决方案


    从构造函数中移除第三个参数即可解决问题。


    drawerListener = new ActionBarDrawerToggle(
    this,
    drawerLayout,
    // R.drawable.ic_drawer, <== delete this argument
    R.string.drawer_open,
    R.string.drawer_close
    ) {
                @Override
                public void onDrawerOpened(View drawerView) {
                    super.onDrawerOpened(drawerView);
                    Toast.makeText(MainActivity.this,"Drawer Open", Toast.LENGTH_LONG).show();
                }
    
                @Override
                public void onDrawerClosed(View drawerView) {
                    super.onDrawerClosed(drawerView);
                    Toast.makeText(MainActivity.this, "Drawer Closed", Toast.LENGTH_LONG).show();
                }
            };
    

    经过大量搜索,我得到了this

    【讨论】:

      【解决方案3】:

      尝试rebuild您的项目。并仔细检查您是否获得了正确的名称。大写的名字也很重要。文件的扩展名是什么? 如果以上内容没有帮助使用此代码:

      drawerListener = new ActionBarDrawerToggle(this, drawerLayout,
                       getDrawable(R.mipmap.ic_drawer),
                       getString(R.string.drawer_open),
                       getString(R.string.drawer_close)){}
      

      【讨论】:

      • 可绘制文件的扩展名是什么?
      • 请分享您的完整代码。您是否已经尝试过rebuilding 您的项目?
      • ive分享了代码,报错行是:drawerListener = new ActionBarDrawerToggle(this,drawerLayout, R.mipmap.ic_drawer, R.string.drawer_open, R.string.drawer_close){}
      • 试试这个drawerListener = new ActionBarDrawerToggle(this, drawerLayout, getDrawable(R.mipmap.ic_drawer), getString(R.string.drawer_open), getString(R.string.drawer_close)){}
      【解决方案4】:

      请清理您的项目并重建

      Build &gt; Clean Project Then Build &gt; Rebuild Project

      【讨论】:

      • 清理和重建后,我收到了我在问题中更新的错误
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多