我想尝试使用以下代码从我的设置中获取一些值:
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.content.*;
public class TCPdumpHandler {
public void getPreference() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
Boolean checkboxPreference = prefs.getBoolean("checkboxPref", true);
}
}
Run Code Online (Sandbox Code Playgroud)
但错误是: The method getBaseContext() is undefined for the type TCPdumpHandler
你能告诉我原因吗?
我对getWritableDatabase()的调用遇到了问题.它返回一个NullPointerException.最奇怪的是,这个错误只是在我在Android清单中注释掉几行代码之后才开始发生的.现在项目又回到了原来的位置(我没有对这些部分进行评论,但它仍然会抛出NullPointerException).所以我检查了我的上下文并尝试了this.getBaseContext()和this.getApplicationContext().
使用getApplicationContext()将其发送到logcat:
08-12 09:24:20.042: E/AndroidRuntime(5572): FATAL EXCEPTION: main
08-12 09:24:20.042: E/AndroidRuntime(5572): java.lang.RuntimeException: Unable to instantiate service com.productivity.uptimeapp.NetService: java.lang.NullPointerException
08-12 09:24:20.042: E/AndroidRuntime(5572): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2395)
08-12 09:24:20.042: E/AndroidRuntime(5572): at android.app.ActivityThread.access$1600(ActivityThread.java:139)
08-12 09:24:20.042: E/AndroidRuntime(5572): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1313)
08-12 09:24:20.042: E/AndroidRuntime(5572): at android.os.Handler.dispatchMessage(Handler.java:99)
08-12 09:24:20.042: E/AndroidRuntime(5572): at android.os.Looper.loop(Looper.java:137)
08-12 09:24:20.042: E/AndroidRuntime(5572): at android.app.ActivityThread.main(ActivityThread.java:5021)
08-12 09:24:20.042: E/AndroidRuntime(5572): at java.lang.reflect.Method.invokeNative(Native Method)
08-12 09:24:20.042: E/AndroidRuntime(5572): at java.lang.reflect.Method.invoke(Method.java:511)
08-12 09:24:20.042: E/AndroidRuntime(5572): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
08-12 09:24:20.042: E/AndroidRuntime(5572): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
08-12 09:24:20.042: E/AndroidRuntime(5572): at dalvik.system.NativeStart.main(Native Method)
08-12 09:24:20.042: E/AndroidRuntime(5572): Caused by: …Run Code Online (Sandbox Code Playgroud) service android nullpointerexception android-context getwritabledatabase
我是java和android的新手.在这里,我正在尝试设置我的onclicklistener,因此在单击时,它将显示另一个活动,即ActivityB.class.问题在于Intent i = new Intent(context, ActivityB.class);我不知道该放什么context.我试着用this和context,两者都是错误的.
能否请您解释何时以及为何使用this以及何时使用其他条款context?
public class MainActivity extends Activity {
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(context, ActivityB.class);
startActivity(i);
}
});
}
Run Code Online (Sandbox Code Playgroud) 实例化Fragment类时如何解决以下问题
holder.infoView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Fragment infoFragment = new ExampleFragment();
infoFragment.show(context.getSupportFragmentManager(), "settings");
....
Run Code Online (Sandbox Code Playgroud)
该代码所属的实际类(MySimpleArrayAdapter)- 不扩展FragmentActivity- 但从扩展该类的另一个类中获取上下文(通过构造函数)。
完全一样,我不能使用诸如
infoFragment.show(context.getSupportFragmentManager(), "settings");
Run Code Online (Sandbox Code Playgroud)
我收到错误:方法Context类型的getSupportFragmentManager()未定义。
是否有解决此问题的简单方法?
我开发了一个Android应用程序(对我来说)它太丑了,我很确定我的方法是非常错误的.
我有一堆片段活动和很多类,如异步任务,业务规则等.特别是,我有一个名为PropertiesReader的类,我用它来读取属性文件.我在很多地方使用这个类,比如片段和业务规则.
public class PropertyReader {
private Properties properties;
public PropertyReader(Context context){
super();
try {
properties = new Properties();
properties.load(context.getResources().getAssets().open("badass.properties"));
} catch (IOException e){
Log.e("Error", "Error opening properties file", e);
}
}
public String getValue(String key){
return properties.getProperty(key);
}
}
Run Code Online (Sandbox Code Playgroud)
在我使用这个课程的每个地方,我做的事情如下:
PropertyReader bla = new PropertyReader(this); //or new PropertyReader(context);
Run Code Online (Sandbox Code Playgroud)
我想知道什么是使用需要构造Context的类的最佳方法.在我看来,每个构造函数都有一个Context参数非常难看.
有任何想法吗?
预先感谢.
我正在使用静态工厂方法来创建片段.但我需要在片段中使用activity的上下文,因此我需要将该上下文包装到一个bundle中,并使用setArguements()方法将其附加到片段,以便我以后可以检索它.
但是如果我尝试通过执行bundle.putSerializable("tag",context)来存储上下文 - >它会抛出一个错误.谁能告诉我如何将活动上下文包装成一个包?
我在Activity中使用了getApplication().bindService()或者只是bindService().是一个优于另一个.考虑到Activity具有生命周期,在什么情况下将使用Application上下文来启动/绑定到服务.
有没有人遇到这样的事情?
这是一个场景:我想构建一个单独的类,从中我可以通过静态方法停止并启动警报.从Activity类中,我想调用我计划构建的这个类的方法,但重点是,当我传递"context"时,我甚至计划将Activity上下文传递给静态方法在我的AlarmManager对象中,Android Studio向我传递了以下信息,这些信息打印在上面的屏幕上,我不得不承认,我不能说明这一点.
我错过了什么?我一直在寻找谷歌,但似乎这种情况不是那么常见.
IMPORTAT:关于上面的图片,我试图只使用上下文(下面的代码),而不使用getApplicationContext(),但它没有运行...
这是代码:
package com.mydomain.myapp;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.SystemClock;
public class AlarmManager {
private static AlarmManager alarm;
private static PendingIntent pIntent;
//start alarm
public static void setAlarm(Context context, int alarmId, long alarmTime) {
Intent startAlarmIntent;
long beginAt = SystemClock.elapsedRealtime() + 60 * 1000;
long interval = 300000; // 5 minutes
alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
startAlarmIntent = new Intent(context, AlarmBroadcastReceiver.class);
pIntent = PendingIntent.getBroadcast(context, alarmId, startAlarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, beginAt, interval, pIntent); …Run Code Online (Sandbox Code Playgroud) 每个Activity都是一个Context.每个View都需要一个Context.是否正确地说当我们将Context传递给View时,我们基本上是通过传递Context来向某个Activity添加一个View?
我希望有人能帮帮忙。我有一个非活动类,需要在其中使用静态方法访问fragmentmanager ,不幸的是我不知道如何正确传递上下文。
任何帮助表示赞赏,
非活动类别:
public class testClass {
..
public synchronized static void checkNewdata(List<data>input, Context context) {
..
FragmentManager ft = ((FragmentActivity)???).getSupportFragmentManager();
DialogFragment newFragment = MyNotification.newInstance();
newFragment.setCancelable(false);
newFragment.show(ft, "mydialog");
..
}
}
Run Code Online (Sandbox Code Playgroud)
还从非活动类中调用方法checkNewdata,在该类中我尝试传递上下文,但这不起作用:
public class SearchResponse extends SuccessResponse {
private Context mcontext;
public SearchResponse(Context context){
mcontext = context;
}
..
@Override
public void save() {
..
testClass.checkNewdata(mainData, context);
..
}
}
Run Code Online (Sandbox Code Playgroud)