我在getDrawable()中调用MainActivity时遇到问题,我已经完成了activity_main.xml,但是它显示此警告“不赞成使用类型资源中的方法getDrawable(int)”。

谁能帮我?

MainActivity.java

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Resources res= getResources();
         TabHost tabs = (TabHost) findViewById(android.R.id.tabhost);
         tabs.setup();
         TabHost.TabSpec spec = tabs.newTabSpec("pestana 1");
         spec.setContent(R.id.tab1);
         spec.setIndicator("1",res.getDrawable(android.R.drawable.bottom_bar));
         tabs.addTab(spec);

         tabs.setup();
         TabHost.TabSpec spec1 =tabs.newTabSpec("pestana 2");
         spec1.setContent(R.id.tab2);
         spec.setIndicator("2",res.getDrawable(android.R.drawable.btn_minus));
         tabs.addTab(spec1);

         tabs.setup();
         TabHost.TabSpec spec2 =tabs.newTabSpec("pestana 3");
         spec2.setContent(R.id.tab3);
         spec.setIndicator("3",res.getDrawable(android.R.drawable.btn_radio));
         tabs.addTab(spec2);
    }
}


activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.tabhost1.MainActivity">

<TabHost
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="100dp"></TabWidget>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <LinearLayout
                android:id="@+id/tab1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="pestana 1"></TextView>
            </LinearLayout>

            <LinearLayout
                android:id="@+id/tab2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="Pesana 2"></TextView>
            </LinearLayout>

            <LinearLayout
                android:id="@+id/tab3"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="Pesana 3"></TextView>
            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
</TabHost>

最佳答案

谁能帮我?


调用getDrawable()并没有错。对于约99%的Android设备,这是您唯一的选择。

在Android 5.1中,他们添加了a second getDrawable() method, one that takes a theme as a second parameter。然后,他们将getDrawable()的单参数版本标记为已弃用。

如果您的minSdkVersion是22,请使用getDrawable()的两参数版本。

如果您的minSdkVersion小于22,请继续使用getDrawable()的单参数版本,并保留弃用通知。

10-07 23:15