从另一个活动调用ACTION_VIEW意图

时间:2014-04-28 21:45:48

标签: android android-intent

我的问题对我来说似乎太复杂了:/

我有一个这样的主要活动:

setContentView(R.layout.main_activity);

(...)

LinearLayout mainLinearLayout;
mainLinearLayout = (LinearLayout)findViewById(R.id.mainLinearLayout);

final JSONObject user = json_user.getJSONObject(0);

ContactListData contactList = new ContactListData();
contactList.AffLayoutData(this, user, mainLinearLayout);

我想通过ContactListData类来扩充main_activity布局中的元素。 我想使用特定的类来执行此操作,因为我必须在我的应用程序的另一部分中重用此联系人通胀。

这是我的ContactListData.java:

public class ContactListData extends Activity {

    public void AffLayoutData(Context context, JSONObject contact, LinearLayout mainLinearLayout) {

        try {

            LinearLayout ll;

            // > Here, a lot of layouts are inflated in main_activity :
            ll = (LinearLayout) View.inflate(context, R.layout.contact_detail_separateur_titre, null);
            ((TextView) ll.findViewById(R.id.titre)).setText("Téléphone");

            // (...) blablabla

            // And there are buttons with OnClickListener :

            ((FrameLayout) ll.findViewById(R.id.primary_action_view_container)).setOnClickListener(mSMSActionClickListener);
            ((FrameLayout) ll.findViewById(R.id.primary_action_view_container)).setTag(contact.getString("Phone"));

            // (...) blablabla
            // Finally, last layout is inflated :
            mainLinearLayout.addView(ll);

        } catch (JSONException e) {
            e.printStackTrace();
            Log.e("GEDE JSONException", null);
        }
    }

    /** My onClickListener of previous buttons */
    protected final OnClickListener mSMSActionClickListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", v.getTag().toString(), null)); 
            startActivity(intent);
        }
    };

。 一切都正确充气。但是当我点击一个按钮时,我有这个错误:

  

04-28 23:37:51.934:W / dalvikvm(30918):threadid = 1:线程退出   未捕获的异常(组= 0x41bd3700)04-28 23:37:51.934:   E / AndroidRuntime(30918):致命异常:主04-28 23:37:51.934:   E / AndroidRuntime(30918):java.lang.NullPointerException 04-28   23:37:51.934:E / AndroidRuntime(30918):at   android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109)   04-28 23:37:51.934:E / AndroidRuntime(30918):at   biz.jchambon.gedm.ContactListData $ 5.onClick(ContactListData.java:302)

我试图在父活动中启动Intent.ACTION_VIEW,但没有成功(静态/非静态问题...)。谁能帮助我?

2 个答案:

答案 0 :(得分:0)

问题可能是v.getTag()null。要获取标记对象,视图应该已经存储了任何对象。

查看代码,您为onClick视图设置了R.id.primary_action_view_container侦听器,但未将任何对象保存为Tag视图。

对于像这样的任何视图,您应该将对象保存为Tag

  view.setTag(yourObject);

所以,你可以得到像这样的对象

 Object yourObject = view.getTag();

答案 1 :(得分:0)

背景错误。

我的ContactListData.class已更正:

public class ContactListData extends Activity {

    public Context ParentContext; // < ADDED

    public void AffLayoutData(Context context, JSONObject contact, LinearLayout mainLinearLayout) {

        ParentContext = context; // < ADDED
        LinearLayout ll;

        try {


            // INFLATION ....

        } catch (JSONException e) {
            e.printStackTrace();
            Log.e("GEDE JSONException", null);
        }
    }

必须像这样调用OnClickListener intent:

ParentContext.startActivity(intent);