Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android全球功能及更多_Java_Android_Android Intent_Globals - Fatal编程技术网

Java Android全球功能及更多

Java Android全球功能及更多,java,android,android-intent,globals,Java,Android,Android Intent,Globals,我在android编程方面几乎没有知识,但愿意学习,所以除了代码片段之外,我还希望有链接和源代码。。。也就是说,这是我想要实现的目标 我正在制作一个有多个按钮的应用程序。这些按钮将用于各种活动,但始终会导致相同的活动。例如,button1将是主要活动的一部分,将转到button1.activity.class,但也可能出现在其他buttonX.activity.class中。无论它在哪里,单击它都会转到button1.activity.class。现在,我希望有一个全局函数,因为我可以从项目中的

我在android编程方面几乎没有知识,但愿意学习,所以除了代码片段之外,我还希望有链接和源代码。。。也就是说,这是我想要实现的目标

我正在制作一个有多个按钮的应用程序。这些按钮将用于各种活动,但始终会导致相同的活动。例如,button1将是主要活动的一部分,将转到button1.activity.class,但也可能出现在其他buttonX.activity.class中。无论它在哪里,单击它都会转到button1.activity.class。现在,我希望有一个全局函数,因为我可以从项目中的任何活动调用它,它可以做很多事情: 1.获取按钮的标签(不确定标签是否用于此,但这是我在脑海中设置的合适的东西) 2.onclick将打开具有特定标记名的活动,例如,如果标记内容为“Salt”,则将打开SaltActivity.class

总的来说,我希望它能像这样工作: openActivity(BTNSAL); 函数将查看名为(btnSalt)的按钮的当前活动,从标记中获取字符串,然后执行类似startActivity的操作(newintent(MainActivity.this、Salt或任何参数为.class))

这应该是全局的,这样我就不必在所有可能的活动中都设置ClickListener上的每个按钮……我猜创建类似Util.class的东西,然后在需要时将其导入到acvtivites应该可以吗

如前所述,非常感谢代码片段、书籍、博客、示例和任何其他帮助。 希望这一切都有意义:)
提前感谢

我希望您对Java和继承有一点了解,即使您不了解Android。您需要让您的活动从基本活动继承

选项1

概括您想要的单个
onClick
方法的一个好方法是在活动类中定义它,例如
BaseActivity
,如下所示:

    public class BaseActivity extends Activity implements OnClickListener {

        @Override
        public void OnClick(View view) {
            // The generalized code here:
            String message = (String) view.getTag();
            Intent theIntent = new Intent(BaseActivity.this, ThatOneActivity.class);
            theIntent.putExtra("Your Key", message);
            startActivity(theIntent);
        }
    }
在使用此方法的其他活动中,您只需执行以下操作:

public class SomeActivity extends BaseActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.yourLayout);
        Button someButton = (Button) findViewById(R.id.yourButtonId);
        // We still have to add an onclicklistener to every button,
        // unless we've defined the onClick element in XML (see option 2)
        button.setOnClickListener(this);
    }
}
选项2

实现
onClick
泛化的另一种方法是仍然有一个定义方法的基类,并向XML中添加一个元素,在其中定义按钮:

android:onClick="openActivity"
然后,您可以在
BaseActivity
类中定义该方法,而无需向实现该方法的活动中的按钮添加任何侦听器:

public class BaseActivity extends Activity implements OnClickListener {

            public void openActivity(View view) {
                // The generalized code here:
                String message = (String) view.getTag();
                Intent theIntent = new Intent(BaseActivity.this, ThatOneActivity.class);
                theIntent.putExtra("Your_Key", message);
                startActivity(theIntent);
            }
        }
最后,在您刚刚开始的活动中(我称之为
ThatOneActivity
),您可以通过其键检索添加到intent的消息:

getIntent().getStringExtra("Your_Key");
记住,硬编码键是在询问错误,因为有一天你可能会输入错误,这样就不起作用了。解决方案很简单:您可以选择一个很好的位置来放置一个
公共静态最终字符串
,在其中定义键(
BaseActivity
),并在整个代码中使用该常量