【问题标题】:setcontentview within onpostExecution在 onpostExecution 中设置内容视图
【发布时间】:2014-03-20 08:10:52
【问题描述】:

您好,我正在使用 android。如何在异步任务的 Onpostexecution 中使用 setContentview ??我使用了代码

  if (getIntent().hasExtra("key")) {

                                if(key.compareTo(App_id)==0)
                                  {
                                    setContentView(R.layout.home); 
                                  }

                              }
                              else {

                                     finish();
                                   }

但它强制关闭并显示错误空指针异常。如何在 onpost 执行中使用 setcontentview??

这是我的 logcat 输出

03-20 13:47:30.270: E/AndroidRuntime(1628): FATAL EXCEPTION: main
03-20 13:47:30.270: E/AndroidRuntime(1628): java.lang.RuntimeException: Unable to start     activity ComponentInfo{com.example.test/com.example.meetap.AdHome}:     java.lang.NullPointerException
03-20 13:47:30.270: E/AndroidRuntime(1628):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at android.app.ActivityThread.access$600(ActivityThread.java:122)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at android.os.Looper.loop(Looper.java:137)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at android.app.ActivityThread.main(ActivityThread.java:4340)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at java.lang.reflect.Method.invokeNative(Native Method)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at java.lang.reflect.Method.invoke(Method.java:511)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at dalvik.system.NativeStart.main(Native Method)
03-20 13:47:30.270: E/AndroidRuntime(1628): Caused by: java.lang.NullPointerException
03-20 13:47:30.270: E/AndroidRuntime(1628):     at com.example.meetap.AdHome.onCreate(AdHome.java:374)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at android.app.Activity.performCreate(Activity.java:4465)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-20 13:47:30.270: E/AndroidRuntime(1628):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
03-20 13:47:30.270: E/AndroidRuntime(1628):     ... 11 more

编辑:

我有NullPointerException@

Button close=(Button)findViewById(R.id.close); 
close.setOnClickListener(new OnClickListener()
{ 
public void onClick(View v) 
{
 finish(); 
} 
});

【问题讨论】:

  • Asynctask 是 Activity 的内部类吗?
  • yaa 我使用异步任务作为内部类
  • 也发布堆栈跟踪
  • 发布 AddHome 代码并指出第 374 行
  • 检查我的新编辑以查看我的日志猫

标签: android asynchronous android-activity task setcontentview


【解决方案1】:

您是否检查过您的 getIntent()!= null。你有没有检查你的“钥匙”!= null

【讨论】:

  • 我用 hasextra 拥有的
  • 当你得到异常时,在布局初始化时或按钮点击时?
  • 那么可能是您的布局不包含 ID 为“R.id.close”的按钮,并且如果在设置 onClickListener 之前检查您是否对其进行了初始化。
【解决方案2】:
Button close=(Button)findViewById(R.id.close); 
close.setOnClickListener(new OnClickListener()
{ 
public void onClick(View v) 
{
 finish(); 
} 
}); 

如果您在上面的close 按钮中说 NPE 为空。您需要在初始化按钮之前拥有setContentView(R.layout.home);,并且需要确保home.xml 有一个id 为关闭的按钮。

编辑:

在另一个xml中定义

您需要像

那样膨胀自定义布局
View view = infalter.inflate(R.layout.customlayout,null);
Button close=(Button)view.findViewById(R.id.close);  

【讨论】:

  • 我用它作为自定义标题栏
  • 在另一个xml中定义
  • @prince 没关系。然后你需要膨胀自定义布局并使用自定义视图对象对其进行初始化
  • 我按照你所说的那样使用。我试图在 poast 执行方法中设置内容视图。但是 onclick 按钮的操作在活动中。所以是在 post 执行之前运行的吗???
  • 你把我弄糊涂了。我无法理解你的cmets。请清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 2021-07-06
相关资源
最近更新 更多