ImageButton 赋值后为 'null'
ImageButton is 'null' after assignment
这是我第一次创建 Android 应用程序,我不确定如何解决此问题。我试图通过 ID 将 ImageButton 变量指向现有的 ImageButton
,但我一直得到 NullPointerException
。这是代码:
...
import android.widget.ImageButton;
public class StartActivity extends ActionBarActivity {
ImageButton addButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
addButton = (ImageButton) findViewById(R.id.add_category_button);
}...
ImageButton
位于布局 card_categories
中。这是该布局的 XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/main_page"
android:weightSum="1">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/add_category_button"
android:layout_gravity="right"
android:background="@drawable/add_button"
android:width="50dp"
android:height="50dp"
/>
</LinearLayout>
我不确定问题是 id
不正确还是什么,但它没有正确地将 ImageButton
拉到 XML 中。感谢您的帮助!
更新:我尝试在 setContentView(R.layout.card_categories)
之后分配 ImageButton
,但它仍然是空的。
OnClickListener myCardsHandler = new OnClickListener() {
public void onClick(View v) {
setContentView(R.layout.card_categories);
addButton = (ImageButton) findViewById(R.id.add_category_button);
loadCategories(dbHandler, categories);
}
};
您在 setContentView
方法中设置了错误的布局。因此,编译器不会在那里找到该名称的任何 ImageButton
也就不足为奇了。
要么膨胀 card_categories:
setContentView(R.layout.activity_start);
或将您的 ImageButton
置于您当前设置的布局中。
试试这个
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.card_categories);
addButton = (ImageButton) findViewById(R.id.add_category_button);
addButton.setOnClickListener(myCardsHandler);
}
OnClickListener myCardsHandler = new OnClickListener() {
public void onClick(View v) {
loadCategories(dbHandler, categories);
}
};
这是我第一次创建 Android 应用程序,我不确定如何解决此问题。我试图通过 ID 将 ImageButton 变量指向现有的 ImageButton
,但我一直得到 NullPointerException
。这是代码:
...
import android.widget.ImageButton;
public class StartActivity extends ActionBarActivity {
ImageButton addButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
addButton = (ImageButton) findViewById(R.id.add_category_button);
}...
ImageButton
位于布局 card_categories
中。这是该布局的 XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/main_page"
android:weightSum="1">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/add_category_button"
android:layout_gravity="right"
android:background="@drawable/add_button"
android:width="50dp"
android:height="50dp"
/>
</LinearLayout>
我不确定问题是 id
不正确还是什么,但它没有正确地将 ImageButton
拉到 XML 中。感谢您的帮助!
更新:我尝试在 setContentView(R.layout.card_categories)
之后分配 ImageButton
,但它仍然是空的。
OnClickListener myCardsHandler = new OnClickListener() {
public void onClick(View v) {
setContentView(R.layout.card_categories);
addButton = (ImageButton) findViewById(R.id.add_category_button);
loadCategories(dbHandler, categories);
}
};
您在 setContentView
方法中设置了错误的布局。因此,编译器不会在那里找到该名称的任何 ImageButton
也就不足为奇了。
要么膨胀 card_categories:
setContentView(R.layout.activity_start);
或将您的 ImageButton
置于您当前设置的布局中。
试试这个
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.card_categories);
addButton = (ImageButton) findViewById(R.id.add_category_button);
addButton.setOnClickListener(myCardsHandler);
}
OnClickListener myCardsHandler = new OnClickListener() {
public void onClick(View v) {
loadCategories(dbHandler, categories);
}
};