findViewById()为单个布局应用程序中的某些自定义视图返回null,而对其他人则可以正常工作

时间:2016-09-19 10:31:44

标签: android android-layout

链接到我的布局视图:

layout view

在回答部分添加了logcat,因为它对于身体来说太多了,也许我应该刚刚从logcat发布错误...

我从这个项目导入的所有旋钮小部件: https://github.com/google/music-synthesizer-for-android

显示在我的单一布局视图中,但是当我在手机上运行时,findViewById()会为我导入的键盘小部件返回null。我不确定为什么。 构造函数为所有小部件调用super(context,attrs),并设置了我的内容视图。

@Override
public void onCreate(Bundle savedInstanceState)
{

    super.onCreate(savedInstanceState);



    setContentView(R.layout.activity_main);

    //Our base Synthesizer model
    //TODO: DSP AND MIDI NOTE ON NOTE OFF
    synthesizerModel = new SynthesizerModel();


    thread = new SynthesizerAudioOutputThread();

    thread.setSynthesizerModel(synthesizerModel);

    //The widget returning null
    keyboardView = (KeyboardView) findViewById(R.id.kv);
    //the other widget returning null
    scrollStripView = (ScrollStripView) findViewById(R.id.ssv);

    //KNOBS//

    knobViews = new KnobView[20];

    knobViews[0] = (KnobView) findViewById(R.id.mod_0_0);
    knobViews[1] = (KnobView) findViewById(R.id.mod_0_1);
    knobViews[2] = (KnobView) findViewById(R.id.mod_0_2);
    knobViews[3] = (KnobView) findViewById(R.id.mod_0_3);

    knobViews[4] = (KnobView) findViewById(R.id.mod_1_0);
    knobViews[5] = (KnobView) findViewById(R.id.mod_1_1);
    knobViews[6] = (KnobView) findViewById(R.id.mod_1_2);
    knobViews[7] = (KnobView) findViewById(R.id.mod_1_3);
    ///Other code all the KnobViews are found

布局XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context="com.csun_comp380_15884.group3.synthesizerapp.MainActivity"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <GridLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <SeekBar
            android:layout_width="200dp"
            android:layout_height="30dp"
            android:id="@+id/frequency"
            android:max="100"
            android:layout_row="0"
            android:layout_column="0" />

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:layout_row="0"
            android:layout_column="2">

            <TextView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="@string/_0"
                android:id="@+id/textView5"
                android:textAlignment="center"
                android:textSize="24sp" />

            <TextView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="@string/_1"
                android:id="@+id/textView6"
                android:textAlignment="center"
                android:textSize="24sp" />

            <TextView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="@string/_2"
                android:id="@+id/textView7"
                android:textAlignment="center"
                android:textSize="24sp" />

            <TextView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="@string/_3"
                android:id="@+id/textView8"
                android:textAlignment="center"
                android:textSize="24sp" />
        </LinearLayout>

        <SeekBar
            android:layout_width="200dp"
            android:layout_height="30dp"
            android:id="@+id/master"
            android:max="100"
            android:layout_row="1"
            android:layout_column="0" />

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="30dp"
            android:layout_height="wrap_content"
            android:layout_row="1"
            android:layout_column="1">

            <TextView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="0"
                android:id="@+id/textView"
                android:textAlignment="center"
                android:textSize="24sp" />

            <TextView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="1"
                android:id="@+id/textView2"
                android:textAlignment="center"
                android:textSize="24sp" />

            <TextView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="2"
                android:id="@+id/textView3"
                android:textAlignment="center"
                android:textSize="24sp" />

            <TextView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="3"
                android:id="@+id/textView4"
                android:textAlignment="center"
                android:textSize="24sp" />
        </LinearLayout>

        <GridLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/gridLayout"
            android:rowCount="4"
            android:columnCount="4"
            android:layout_row="1"
            android:layout_column="2">

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_0_0"
                android:layout_row="0"
                android:layout_column="0" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_1_0"
                android:layout_row="0"
                android:layout_column="1" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_2_0"
                android:layout_row="0"
                android:layout_column="2" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_3_0"
                android:layout_row="0"
                android:layout_column="3" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_0_1"
                android:layout_row="1"
                android:layout_column="0" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_1_1"
                android:layout_row="1"
                android:layout_column="1" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_2_1"
                android:layout_row="1"
                android:layout_column="2" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_3_1"
                android:layout_row="1"
                android:layout_column="3" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_0_2"
                android:layout_row="2"
                android:layout_column="0" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_1_2"
                android:layout_row="2"
                android:layout_column="1" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_2_2"
                android:layout_row="2"
                android:layout_column="2" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_3_2"
                android:layout_row="2"
                android:layout_column="3" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_0_3"
                android:layout_row="3"
                android:layout_column="0" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_1_3"
                android:layout_row="3"
                android:layout_column="1" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_2_3"
                android:layout_row="3"
                android:layout_column="2" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/mod_3_3"
                android:layout_row="3"
                android:layout_column="3" />

        </GridLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="120dp"
            android:layout_height="30dp"
            android:layout_row="2"
            android:layout_column="2">

        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="120dp"
            android:layout_height="30dp"
            android:layout_row="3"
            android:layout_column="2">

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/out_0" />
            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/out_1" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/out_2" />

            <com.csun_comp380_15884.group3.synthesizerapp.knob.KnobView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/out_3" />

        </LinearLayout>

    </GridLayout>

    <com.csun_comp380_15884.group3.synthesizerapp.keyboard.ScrollStripView
        android:id="@+id/ssv"
        android:layout_width="match_parent"
        android:layout_height="@dimen/scrollstripheight"/>

    <com.csun_comp380_15884.group3.synthesizerapp.keyboard.KeyboardView
        android:id="@+id/kv"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        app:octaves="2"
        app:first_octave="4"/>

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"

>

我修复了那些伙计们非常感谢你们的帮助我意识到我的线性布局也返回NULL所以我删除了我的旧XML并复制粘贴了一个新的更改此行谢谢!只是删除旧的布局工作和复制粘贴工作,我不知道为什么,但我很高兴!