【问题标题】:android activitythread settext errorandroid活动线程settext错误
【发布时间】:2013-02-27 21:26:40
【问题描述】:
02-27 22:53:13.047: E/AndroidRuntime(11744): FATAL EXCEPTION: main
02-27 22:53:13.047: E/AndroidRuntime(11744): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.itcuties.android.reader/com.itcuties.android.reader.ItemDescriptionActivity}: java.lang.NullPointerException
02-27 22:53:13.047: E/AndroidRuntime(11744):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at android.os.Looper.loop(Looper.java:137)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at android.app.ActivityThread.main(ActivityThread.java:5041)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at java.lang.reflect.Method.invokeNative(Native Method)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at java.lang.reflect.Method.invoke(Method.java:511)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at dalvik.system.NativeStart.main(Native Method)
02-27 22:53:13.047: E/AndroidRuntime(11744): Caused by: java.lang.NullPointerException
02-27 22:53:13.047: E/AndroidRuntime(11744):    at com.itcuties.android.reader.ItemDescriptionActivity.onCreate(ItemDescriptionActivity.java:18)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at android.app.Activity.performCreate(Activity.java:5104)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
02-27 22:53:13.047: E/AndroidRuntime(11744):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
02-27 22:53:13.047: E/AndroidRuntime(11744):    ... 11 more

还有ItemDescriptionActivity.java

package com.itcuties.android.reader;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import com.itcuties.android.reader.R;

public class ItemDescriptionActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.item);

        Bundle bundle = getIntent().getExtras();
        String item_description = bundle.getString("description");

        TextView desc = (TextView) findViewById(R.layout.item);
        desc.setText(item_description);
    }
}

应用正在获取 rss 数据,在列表视图中显示标题。我正在尝试在点击时添加显示描述,但点击时应用程序崩溃。什么会导致这些错误?

【问题讨论】:

    标签: android settext


    【解决方案1】:

    您需要将id 传递给findViewById(),也许您打算使用findViewById(R.id.item);。如果您仍然遇到同样的 LogCat 错误,请确保布局 item.xml 实际上有一个 TextView,其 id 为:@+id/item

    此外,并非每个 Activity 都以 Intent 启动,并且并非每个 Intent 都有额外内容,在使用它们之前,您应该确保这些值都不是 null


    添加另一个 RSS 值

    让我们把链接和描述一起传递:

    public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {   
        Intent intent = new Intent(activity, ItemDescriptionActivity.class);
    
        RSSItem item = listItems.get(pos);
        intent.putExtra("description", item.getDescription());
        intent.putExtra("link", item.getLink());
        activity.startActivity(intent);
    }   
    

    接下来我们将在ItemDescriptionActivity 中创建一个新的类变量:

    String item_link;
    

    最后设置按钮打开网页中的链接:

    item_link = bundle.getString("link");
    Button link = (Button) findViewById(R.id.button1);
    link.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent browse = new Intent(Intent.ACTION_VIEW, Uri.parse(item_link));
            startActivity(browse);
        }
    }
    

    【讨论】:

    • findViewById(R.id.Description);修复
    • 我很确定一个活动总是以一个意图开始的。我从来没有发生过这种情况,我依赖它存在于我的应用程序中。如果存在意图为空的情况,我很想知道以避免破坏东西:)
    • @milesh 很高兴我能帮上忙!
    • 好的,我查看了您的代码,让我们使用您已经设置的按钮。在onItemClick() 中传递链接值以及描述:intent.putExtra("link", listItems.get(pos).getLink());,然后在ItemDescriptionActivity 中将链接读取到一个新变量中,然后找到 Button,并设置一个 OnClickListener,最后在 Intent 中使用,如: Android: Goto HTTP Url on Button Click
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多