gpt4 book ai didi

java - 如何从 Quickaction 启动 Activity ?

转载 作者:行者123 更新时间:2023-12-01 05:26:21 25 4
gpt4 key购买 nike

我的应用程序中有一个自定义弹出窗口(快速操作),使用 this project 。我想在单击按钮(在此弹出窗口中)后开始 Activity 。这是带有弹出窗口的 Activity 代码:

public class FirstActivity extends Activity implements OnClickListener {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

ImageView popupButton = (ImageView) this.findViewById(R.id.popup_btn);
popupButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupWindow dw = new PopupWindow(v);
dw.showLikePopDownMenu();
}
});
}

// my stuff



//popup window
private class PopupWindow extends PopupWindowActivity implements OnClickListener {
public PopupWindow(View anchor) {
super(anchor);
}

@Override
protected void onCreate() {
// inflate layout
LayoutInflater inflater =
(LayoutInflater) this.anchor.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

ViewGroup root = (ViewGroup) inflater.inflate(R.layout.popup, null);

// setup button events
ImageView aboutButton = (ImageView) findViewById(R.id.btn_about);
aboutButton.setOnClickListener(this);

this.setContentView(root);
}

@Override
public void onClick(View v) {

switch (v.getId()) {
case R.id.btn_about: {
Intent activity = new Intent(FistActivity.this, About.class);
startActivity(activity);
break;
}

}
}}

但是这种从弹出窗口启动 Activity 的方法不起作用。这是代码的另一个版本(在源 PopupWindow 中是私有(private)静态类):

私有(private)静态类 PopupWindow 扩展 PopupWindowActivity 实现 OnClickListener { 公共(public) PopupWindow(查看 anchor ){ super ( anchor ); }

@Override
protected void onCreate() {
// inflate layout
LayoutInflater inflater =
(LayoutInflater) this.anchor.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

ViewGroup root = (ViewGroup) inflater.inflate(R.layout.popup, null);

// setup button events
ImageView aboutButton = (ImageView) findViewById(R.id.btn_about);
aboutButton.setOnClickListener(this);


this.setContentView(root);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_about: {
Intent intent = new Intent();
intent.setClass(this, About.class);

startActivity(intent);
break;
}

default:
break;
}
}}

eclipse说首先我应该从private static class PopupWindow extends PopupWindowActivity Implements...删除static,然后我有以下intent.setClass(这个,About.class);:

The method setClass(Context, Class<?>) in the type Intent is not applicable for the arguments (FirstActivity.PopupWindow, Class<About>).

请帮忙解决这个问题。

<小时/>

添加日志。当我按下按钮打开弹出窗口时,应用程序强制关闭并显示以下日志:

03-09 21:37:18.259: D/AndroidRuntime(9037): Shutting down VM
03-09 21:37:18.259: W/dalvikvm(9037): threadid=1: thread exiting with uncaught exception (group=0x40018578)
03-09 21:37:18.259: E/AndroidRuntime(9037): FATAL EXCEPTION: main
03-09 21:37:18.259: E/AndroidRuntime(9037): java.lang.NullPointerException
03-09 21:37:18.259: E/AndroidRuntime(9037): at com.example.FirstActivity$PopupWindow.onCreate(FirstActivity.java:118)
03-09 21:37:18.259: E/AndroidRuntime(9037): at com.example.PopupWindowActivity.<init>(PopupWindowActivity.java:52)
03-09 21:37:18.259: E/AndroidRuntime(9037): at com.example.FirstActivity$PopupWindow.<init>(FirstActivity.java:103)
03-09 21:37:18.259: E/AndroidRuntime(9037): at com.example.FirstActivity$1.onClick(FirstActivity.java:32)
03-09 21:37:18.259: E/AndroidRuntime(9037): at android.view.View.performClick(View.java:2485)
03-09 21:37:18.259: E/AndroidRuntime(9037): at android.view.View$PerformClick.run(View.java:9080)
03-09 21:37:18.259: E/AndroidRuntime(9037): at android.os.Handler.handleCallback(Handler.java:587)
03-09 21:37:18.259: E/AndroidRuntime(9037): at android.os.Handler.dispatchMessage(Handler.java:92)
03-09 21:37:18.259: E/AndroidRuntime(9037): at android.os.Looper.loop(Looper.java:130)
03-09 21:37:18.259: E/AndroidRuntime(9037): at android.app.ActivityThread.main(ActivityThread.java:3687)
03-09 21:37:18.259: E/AndroidRuntime(9037): at java.lang.reflect.Method.invokeNative(Native Method)
03-09 21:37:18.259: E/AndroidRuntime(9037): at java.lang.reflect.Method.invoke(Method.java:507)
03-09 21:37:18.259: E/AndroidRuntime(9037): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
03-09 21:37:18.259: E/AndroidRuntime(9037): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
03-09 21:37:18.259: E/AndroidRuntime(9037): at dalvik.system.NativeStart.main(Native Method)

最佳答案

您可能需要将上下文传递到您的 Intent 中。尝试通过创建接受 Context 作为参数之一的构造函数,将上下文传递到您的 popupwindowactivity

例如。

private static class PopupWindow extends PopupWindowActivity implements OnClickListener { 
private Context context; //you now have access to context!

public PopupWindow(View anchor, Context context) { //new constructor
super(anchor);
this.context = context; //notice this!

}

@Override
protected void onCreate() {
// inflate layout
LayoutInflater inflater =
(LayoutInflater) this.anchor.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

ViewGroup root = (ViewGroup) inflater.inflate(R.layout.popup, null);

// setup button events
ImageView searchButton = (ImageView) findViewById(R.id.btn_about);
algebraButton.setOnClickListener(this);


this.setContentView(root);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_about: {
Intent intent = new Intent();
intent.setClass(context, About.class); //using the context down here!!

startActivity(intent);
break;
}

default:
break;
}
}}

注意代码intent.setClass(上下文,About.class);它利用您传入的上下文

关于java - 如何从 Quickaction 启动 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com