我目前有一个活动,当它显示时,通知也将显示在通知栏中.
这样,当用户按下主页并将活动推送到后台时,他们可以通过通知返回活动.
当用户按下后退按钮时,问题就出现了,我的活动被破坏但是通知仍然存在,因为我希望用户能够按下但仍然能够通过通知进入活动.但是当用户尝试这个时,我会尝试Null Pointers尝试启动一项新活动,而不是重新启动旧活动.
所以基本上我希望Back按钮的行为与Home按钮完全相同,这是我到目前为止的尝试方式:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
Log.d("CDA", "onKeyDown Called");
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
public void onBackPressed() {
Log.d("CDA", "onBackPressed Called");
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
return;
}
Run Code Online (Sandbox Code Playgroud)
但是上面的代码似乎仍然允许我的Activity被销毁,如何在按下后退按钮时阻止我的Activity被销毁?
android back-button nullpointerexception onkeypress android-activity
将活动添加到现有Android项目时,我手动创建一个新类 - 这是最佳/首选方式吗?其他人如何处理?
在开发者控制台错误报告中,有时我会看到有NPE问题的报告.我不明白我的代码有什么问题.在模拟器上,我的设备应用程序在没有forcecloses的情况下运行良好,但是当调用getActivity()方法时,一些用户在片段类中获得NullPointerException.
活动
pulic class MyActivity extends FragmentActivity{
private ViewPager pager;
private TitlePageIndicator indicator;
private TabsAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
pager = (ViewPager) findViewById(R.id.pager);
indicator = (TitlePageIndicator) findViewById(R.id.indicator);
adapter = new TabsAdapter(getSupportFragmentManager(), false);
adapter.addFragment(new FirstFragment());
adapter.addFragment(new SecondFragment());
indicator.notifyDataSetChanged();
adapter.notifyDataSetChanged();
// push first task
FirstTask firstTask = new FirstTask(MyActivity.this);
// set first fragment as listener
firstTask.setTaskListener((TaskListener) adapter.getItem(0));
firstTask.execute();
}
indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
Fragment currentFragment = adapter.getItem(position);
((Taskable) currentFragment).executeTask();
}
@Override
public void onPageScrolled(int …Run Code Online (Sandbox Code Playgroud) android nullpointerexception android-asynctask android-fragments android-activity
如何定义Android 1.5及更高版本的两个活动之间的转换?我希望活动能够淡出.
我有一个像这样的公共方法的片段(F1)
public void asd() {
if (getActivity() == null) {
Log.d("yes","it is null");
}
}
Run Code Online (Sandbox Code Playgroud)
是的,当我调用它(来自Activity)时,它是null ...
FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
F1 f1 = new F1();
transaction1.replace(R.id.upperPart, f1);
transaction1.commit();
f1.asd();
Run Code Online (Sandbox Code Playgroud)
它一定是我做错了,但我不知道那是什么
null android android-context android-fragments android-activity
我正在尝试使用下面的代码显示文本.问题是文本不是水平居中的.当我设置坐标时drawText,它会在此位置设置文本的底部.我希望绘制文本,以便文本也水平居中.
这是一张进一步显示我的问题的图片:
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
//canvas.drawRGB(2, 2, 200);
Paint textPaint = new Paint();
textPaint.setARGB(200, 254, 0, 0);
textPaint.setTextAlign(Align.CENTER);
textPaint.setTypeface(font);
textPaint.setTextSize(300);
canvas.drawText("Hello", canvas.getWidth()/2, canvas.getHeight()/2 , textPaint);
}
Run Code Online (Sandbox Code Playgroud) 我有一个Activity3 EditText秒和一个自定义视图,它作用一个专门的键盘来添加信息到EditTexts.
目前我正在将Activity视图传递给视图,以便我可以获得当前聚焦的编辑文本并更新自定义键盘中的内容.
有没有一种方法可以引用父活动并在EditText不将活动传递到视图的情况下获得当前的焦点?
是否有一种原生的android方法来从服务获取对当前运行的Activity的引用?
我有一个在后台运行的服务,我想在事件发生时(在服务中)更新我当前的Activity.有没有一种简单的方法(就像我上面建议的那样)?
我在Android应用程序中有2个活动(A和B),我使用意图从活动A到活动B.使用parent_activity:
<activity
android:name=".B"
android:label="B" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.app_name.A" />
</activity>
Run Code Online (Sandbox Code Playgroud)
我还使用了一个提供UP按钮的主题.
因此,在我调用活动之后,BI可以使用UP按钮返回活动A.问题是应用程序似乎再次调用活动A 的onCreate()函数,这不是我需要的行为.我需要活动A看起来像我在调用活动B之前看起来一样.
有没有办法实现这个目标?
提前致谢
编辑:
我没有编写任何代码来从活动A开始活动B.我认为它是由eclipse自动生成的.
B类看起来像:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_b, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud) android ×10
android-activity ×10
android-view ×1
back-button ×1
drawtext ×1
eclipse ×1
ide ×1
java ×1
null ×1
onkeypress ×1
parent ×1
service ×1
transition ×1