请原谅我,我是Android新手编程的新手。我试图将ImageButton链接到一个名为crafting的类,然后在该类中启动一个名为crafting的xml文件。该按钮似乎没有在avd中做任何事情,但我很难看到我的错误在哪里。
以下是代码:
mainActivity:
package cf.angryman.app;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.button_test);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void SetupCraftingButton() {
ImageButton craftingButton = (ImageButton) findViewById(R.id.crafting);
craftingButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), Crafting.class));
}
});
}
}
制作类:
package cf.angryman.app;
import android.os.Bundle;
import android.app.Activity;
public class Crafting extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.crafting);
}
}
这是xml代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/home_background" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/logo"
android:layout_centerInParent="true" />
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="341dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageButton
android:id="@+id/crafting"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginLeft="30dp"
android:layout_marginTop="30dp"
android:background="@null"
android:scaleType="fitXY"
android:src="@drawable/workbench" />
</LinearLayout>
</ScrollView>
</LinearLayout>
希望你能帮忙!
谢谢,
亚历
答案 0 :(得分:1)
SetupCraftingButton()
永远不会被调用。
在onCreate() { ... }
之后的第一行setContentView(R.layout.button_test)
内拨打电话,这样可以解决您的问题。
答案 1 :(得分:0)
我相信我发现了你的错误。 在您的MainActivity.class更改
startActivity(new Intent(getApplicationContext(), Crafting.class));
到
Intent intent = new Intent(context, Crafting.class);
startActivity(intent);
并添加
final Context context = this;
低于您的公共空间SetupCraftingButton()
然后添加此
import android.content.Context;
到您的导入列表
另外,作为Stephan(你可以接受他的答案,而不是我的答案)指出你没有调用SetupCraftingButton()。
所以你的代码看起来像这样
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.button_test);
SetupCraftingButton();
}
因此,您的SetupCraftingButton()中的代码将如下所示
public void SetupCraftingButton() {
final Context context = this;
ImageButton craftingButton = (ImageButton) findViewById(R.id.crafting);
craftingButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, Crafting.class);
startActivity(intent);
}
});
}