首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >getApplicationContext()错误

getApplicationContext()错误
EN

Stack Overflow用户
提问于 2015-02-17 13:24:44
回答 7查看 50.8K关注 0票数 9

我有一个片段,允许用户输入消息和将消息传递到的电话号码。我得到了一个错误“无法解决方法getApplicationContext()”,我看了这里的答案-- 方法getApplicationContext()未定义,但是它帮不了我,也许我实现错了,但我不确定!这段代码作为一个活动运行得很好,但不是作为一个片段。

FragmentTab1类

代码语言:javascript
运行
复制
package com.androidbegin.absfragtabhost;

import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.app.Fragment;
import android.app.Activity;
import android.telephony.SmsManager;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class FragmentTab3 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragmenttab3, container, false);
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main);

    sendBtn = (Button) rootView.findViewById(R.id.btnSendSMS);
    txtphoneNo = (EditText) rootView.findViewById(R.id.editTextPhoneNo);
    txtMessage = (EditText) rootView.findViewById(R.id.editTextSMS);

    sendBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            sendSMSMessage();
        }
    });

    return rootView;
}



    Button sendBtn;
    EditText txtphoneNo;
    EditText txtMessage;



    protected void sendSMSMessage() {
        Log.i("Send SMS", "");

        String phoneNo = txtphoneNo.getText().toString();
        String message = txtMessage.getText().toString();

        try {
            SmsManager smsManager = SmsManager.getDefault();
            smsManager.sendTextMessage(phoneNo, null, message, null, null);
            Toast.makeText(getApplicationContext(), "SMS sent.",
                    Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(),
                    "SMS failed, please try again.",
                    Toast.LENGTH_LONG).show();
            e.printStackTrace();


        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }


}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-02-17 13:29:20

类getApplicationContext()中不存在方法Fragment ()。但是,它确实存在于类Activity中,因此可以使用getActivity().getApplicationContext()从片段对象中获取上下文。(假设片段附加到一个活动中,所以getActivity()将返回一个非空对象,这通常是真的)

票数 38
EN

Stack Overflow用户

发布于 2015-02-17 13:27:11

使用getActivity().getApplicationContext();

票数 6
EN

Stack Overflow用户

发布于 2015-02-17 13:37:57

应该使用片段活动中可用的应用程序上下文

代码语言:javascript
运行
复制
getActivity().getApplicationContext();

您不应该在这里使用getActivity()作为上下文,因为Toast可以比显示它的活动更长(按下Home按钮,另一个活动已经启动,等等)。

http://developer.android.com/guide/topics/ui/notifiers/toasts.html#Basics

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28562595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档