我的主页上有三个按钮。当我尝试点击它们时会发生一些奇怪的事情。例如,当我单击 NewGame 按钮时,它首先显示分数按钮应显示的内容,然后如果我单击后退按钮,它将继续显示它打算显示的活动。使用“关于”按钮,我必须单击返回两次(它显示 newGame 活动和分数活动。发生这种情况有什么原因吗?
public class Sakurame extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
//set up click listeners for buttons
View HighScoreButton = findViewById(R.id.highscore_button);
HighScoreButton.setOnClickListener(this);
View newButton = findViewById(R.id.new_button);
newButton.setOnClickListener(this);
View aboutButton = findViewById(R.id.about_button);
aboutButton.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case R.id.settings:
startActivity(new Intent(this, Prefs.class)); …Run Code Online (Sandbox Code Playgroud) 我运行了 HelloWorld android 应用程序,现在我开始制作按钮之类的东西。我能够在布局 xml 和所有这些中创建按钮,但是我遇到了一些关于 Eclipse 无法识别我的 Intent 声明的困惑。
下面是一段代码:
addProblemButton.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v) {
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
CurrentActivity.this.startActivity(myIntent);
}
});
Run Code Online (Sandbox Code Playgroud)
CurrentActivity 和 NextActivity 类似乎无法识别,Eclipse 并没有给我自动创建导入语句的选项。
这些类所在的包是什么?是不是有些东西不认识的问题?或者一些需要安装/下载的包?处理这种情况的最佳实践方法是什么?
另外,如果我已经将按钮添加到布局中,是否还需要添加侦听器?
谢谢!
我有一个在清单中声明为的服务('Aservice')
<service android:name=".Aservice" android:process=":my_process" > </service>
Run Code Online (Sandbox Code Playgroud)
我想知道如何从应用程序的另一个服务(让“Bservice”)停止此服务。我试过这样,服务“Aservice”找到它的进程ID使用
int pid = android.os.Process.myPid();
Run Code Online (Sandbox Code Playgroud)
然后它把它的Id发送到另一个专门用来停止自己的服务('Bservice')(服务Aservice),'Bservice'调用这个代码
android.os.Process.killProcess(pid);
Run Code Online (Sandbox Code Playgroud)
其中“pid”是发送的 Aservice 服务进程 ID,但“Bservice”无法停止服务“Aservice”,我可以看到电话设置->正在运行的服务中列出的服务。还有这个代码
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
{
sClassName = service.service.getClassName();
if (sClassName.contains("com.pkg.Rand.Aservice"))
{ return true; }
}
return false;
Run Code Online (Sandbox Code Playgroud)
正在返回 True。有必要将服务作为单独的进程运行,以防止应用程序在感知位置时变慢。请就如何停止服务作为独立进程运行的建议与不同进程中的其他服务分开。
任何帮助都受到高度赞赏。
我需要将数据从Fragment发送到另一个活动
我在HomeActivity下的LoadsFragment中使用此代码
Intent intent = new Intent(activity, LoadActivity.class);
intent.putExtra("loadsPosition",position);
activity.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
在另一个活动(LoadActivity)中接收数据
Intent intent=getIntent();
String loadsPosition = intent.getStringExtra("loadsPosition");
Run Code Online (Sandbox Code Playgroud)
但意图没有额外的东西
请参阅下面的屏幕截图
在我的应用程序中,我从服务器下载apk并将其保存在设备上。该apk用于更新应用。如果下载完成,则提示用户使用以下代码进行下载:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Uri apkUri = FileProvider.getUriForFile(getApplicationContext(), BuildConfig.APPLICATION_ID + ".provider", updateAPK);
Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
intent.setData(apkUri);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
} else {
Uri apkUri = Uri.fromFile(updateAPK);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
这可以正常工作,但是我的问题是:ist能否获得意图的结果,因此我可以检查用户是否取消了安装?
尝试共享图像文件时,我不断收到此错误:
java.lang.RuntimeException:android.os.TransactionTooLargeException:数据包大小1085992字节
我假设一个解决方案是将图像压缩得更多,这会减小尺寸.这是完成这项工作的功能:
public static File saveBitmaptoFile(Bitmap bitmap, File pictureFile) {
FileOutputStream out = null;
try {
out = new FileOutputStream(pictureFile);
// on the next line I'm trying compress the heck out of image.
bitmap.compress(Bitmap.CompressFormat.JPEG, 1, out);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return pictureFile;
}
Run Code Online (Sandbox Code Playgroud)
这是共享功能:
private void shareToInstagram() {
String type = "image/png";
Intent share = new Intent(Intent.ACTION_SEND); …Run Code Online (Sandbox Code Playgroud) 我试图Intent在Android Studio的Kotlin中设置以启动另一个Activity.kt:
val i : Intent = Intent(this, MainActivity::class.java)
Run Code Online (Sandbox Code Playgroud)
Android Studio向我显示了一个错误,并且无法编译:
Error:(23, 26) None of the following functions can be called with the arguments supplied:
public constructor Intent(p0: Context!, p1: Class<*>!) defined in android.content.Intent
public constructor Intent(p0: String!, p1: Uri!) defined in android.content.Intent
Run Code Online (Sandbox Code Playgroud)
我认为语法是正确的,那怎么了?
我是android的新手,我有一个RecyclerView可以显示json的图像列表。我想在RecyclerView的项目单击时做到全屏显示图像,而且应该可以放大和缩小。功能是使用Photoview Library完成的,但是无法全屏查看项目。下面附有适配器类代码。请任何人帮助我执行此操作。
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
final MyHolder myHolder = (MyHolder) holder;
DataFish current = data.get(position);
// load image into imageview using glide
Glide.with(context).load(current.flagimage)
.placeholder(R.drawable.ic_launcher_background)
.error(R.drawable.ic_launcher_background)
.into(myHolder.imageView);
myHolder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
Run Code Online (Sandbox Code Playgroud)
我想在此onclick中添加用于全屏查看的代码。
众所周知,我们可以通过使用将额外信息放入Intent putExtra/putExtras,并将其传递给另一个应用程序.在目的地,我们可以getxxxExtra/getExtras用来获取这些信息.但是,所有这些方法都需要一个密钥.
我想知道是否有办法在没有密钥的情况下获取信息.或者,有没有办法检查已设置到捆绑中的所有密钥?
提前致谢!
如果我想在Android中启动一个新的Activity,我需要将Activity传递给Intent.但是,不要像这样传递Kotlin类:
val intent: Intent = Intent(this, SearchActivity::class)
Run Code Online (Sandbox Code Playgroud)
我需要像这样将Kotlin类作为Java类传递:
val intent: Intent = Intent(this, SearchActivity::class.java)
Run Code Online (Sandbox Code Playgroud)
为什么我需要添加这个额外的标识符,因为我SearchActivity是一个.kt文件?