我正在尝试创建一个图像按钮OnClick在单独的活动上实时创建另一个动态ImageButton到布局,但是新按钮创建的布局在nullpointerexception错误和应用程序崩溃的情况下保持调高null,什么我做错了吗?
package org.iimed.www;
import android.R.drawable;
import android.R.string;
import android.os.Bundle;
import android.text.Layout;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import org.iimed.www.Sundayopen;
public class Penicillins extends Activity implements OnClickListener {
public void onCreate(Bundle SavedInstanceState){
super.onCreate(SavedInstanceState);
setContentView(R.layout.penicillin);
ImageButton addmed = (ImageButton) findViewById(R.id.addmed);
addmed.setOnClickListener(this);
}
public void onClick(View v){
switch (v.getId()) {
case R.id.addmed:
startActivity(new Intent(Penicillins.this,Sundayopen.class));
LayoutParams param = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
final RelativeLayout ll = (RelativeLayout)findViewById(R.id.sundayopen);
final ImageButton ab = (ImageButton)findViewById(R.id.adaba);
ab.setLayoutParams(param);
ll.addView(ab);
}}}
我想让它出现在
中的活动package org.iimed.www;
import org.iimed.www.MainActivity;
import org.iimed.www.Iimedja;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.view.View.OnClickListener;
public class Sundayopen extends Activity implements OnClickListener {
ImageButton ab;
@Override
protected void onCreate(Bundle iimed) {
super.onCreate(iimed);
setContentView(R.layout.sundayopen);
ImageButton ab = new ImageButton(getApplicationContext());
ImageButton hb1 = (ImageButton) findViewById(R.id.homebutton1);
ImageButton sbc = (ImageButton) findViewById(R.id.satlidopen);
ImageButton abb = (ImageButton) findViewById(R.id.abbutton);
sbc.setOnClickListener(this);
hb1.setOnClickListener(this);
abb.setOnClickListener(this);
ab.setOnClickListener(this);
}
public void onClick(View v){
switch (v.getId()) {
case R.id.homebutton1:
startActivity(new Intent(this, MainActivity.class));
break;
case R.id.satlidopen:
MediaPlayer media = MediaPlayer.create(Sundayopen.this, R.raw.openlid);
media.start();
startActivity(new Intent(this,Iimedja.class));
break;
case R.id.abbutton:
startActivity(new Intent(this, ImageTextListViewActivity.class));
}
}
}
感谢您的耐心,我很新 我已经将主要类编辑为我现在正在尝试的内容,我刚刚创建了一个XML ImageButton并分配了一个要调用的ID,而不是在运行时设置它并设置它的参数。但仍然没有运气:/
Stack
Thread [<1> main] (Suspended (exception NullPointerException))
<VM does not provide monitor information>
Penicillins.onClick(View) line: 63
ImageButton(View).performClick() line: 4354
View$PerformClick.run() line: 17961
Handler.handleCallback(Message) line: 725
ViewRootImpl$ViewRootHandler(Handler).dispatchMessage(Message) line: 92
Looper.loop() line: 137
ActivityThread.main(String[]) line: 5328
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 511
ZygoteInit$MethodAndArgsCaller.run() line: 1102
ZygoteInit.main(String[]) line: 869
NativeStart.main(String[]) line: not available [native method]
答案 0 :(得分:0)
您没有创建图像对象按钮。 它应该像
ImageButton ab = new ImageButton(getApplicationContext);
答案 1 :(得分:0)
像这样初始化ab。
ImageButton ab = (ImageButton) findViewById(R.id.ab);
答案 2 :(得分:0)
首先初始化获取需要
的布局IDImageButton ab = (ImageButton)findviewbyid(R.id.btnAb);
或者如果你采用动态图像按钮
ImageButton ab = new ImageButton(this);
答案 3 :(得分:0)
nullpointer错误是因为你的onClick
监听器中你甚至没有初始化ImageButton ab;
并且你正在直接使用它。首先初始化它然后设置drawable。
addmed.setOnClickListener(new OnClickListener() {
int i;
RelativeLayout il = (RelativeLayout)findViewById(R.id.sundayopen);
ImageButton ab= (ImageButton)findViewById(R.id.<buttonID>);
public void onClick(View v){
ab.setId(i);
ab.getResources().getDrawable(R.drawable.adaba);
il.addView(ab);
}});
答案 4 :(得分:0)
据我所知,您在代码中使用了不正确的变量声明。 您已在全局级别和本地级别声明了相同的 ImageButton ab 。
删除全局变量声明后,您将看到如下错误:
将图像按钮ab的修改器更改为最终。
类似的情况也适用于 RelativeLayout ll 。
此外,在动态视图创建的情况下最好使用LinearLayout,因为您可以更好地控制它们的位置。